Fancy URLとmod_rewriteの面倒な点を解決するMagical URLという方法があります。

参考
nakahara21[FancyURLで自動生成するファイル名をmod_rewrite]
nakahara21[FancyURLとMagicalURLモードで複数blog運用 ]

変更

上記の記事を参考にMagical URLに変更してみます。

まずここを参考にFancy URLにします。

それから、/nucleus/libs/globalfunctions.php 260行目付近
// decode path_info
if ($CONF['URLMode'] == 'pathinfo') {
$data = explode("/",serverVar('PATH_INFO'));
// decode path_info if ($CONF['URLMode'] == 'pathinfo') {
$data_str = preg_replace("/.html$/","",serverVar("PATH_INFO"));
$data = explode("_",$data_str);
940行目付近
/**
* Centralisation of the functions that generate links
*/
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item/' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
function createMemberLink($memberid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['MemberURL'] . '/member/' . $memberid;
else
$link = $CONF['MemberURL'] . '?memberid=' . $memberid;
return addLinkParams($link, $extra);
}
function createCategoryLink($catid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['CategoryURL'] . '/category/' . $catid;
else
$link = $CONF['CategoryURL'] . '?catid=' . $catid;
return addLinkParams($link, $extra);
}
function createArchiveListLink($blogid = '', $extra = '') {
global $CONF;
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveListURL'] . '/archives/' . $blogid;
else
$link = $CONF['ArchiveListURL'] . '?archivelist=' . $blogid;
return addLinkParams($link, $extra);
}
function createArchiveLink($blogid, $archive, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveURL'] . '/archive/'.$blogid.'/' . $archive;
else
$link = $CONF['ArchiveURL'] . '?blogid='.$blogid.'&archive=' . $archive;
return addLinkParams($link, $extra);
}
function createBlogLink($url, $params) {
return addLinkParams($url . '?', $params);
}
function createBlogidLink($blogid, $params = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['BlogURL'] . '/blog/' . $blogid;
else
$link = $CONF['BlogURL'] . '?blogid=' . $blogid;
return addLinkParams($link, $params);
}
/**
* Centralisation of the functions that generate links
*/
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item_' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
function createMemberLink($memberid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['MemberURL'] . '/member_' . $memberid;
else
$link = $CONF['MemberURL'] . '?memberid=' . $memberid;
return addLinkParams($link, $extra);
}
function createCategoryLink($catid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['CategoryURL'] . '/catid_' . $catid;
else
$link = $CONF['CategoryURL'] . '?catid=' . $catid;
return addLinkParams($link, $extra);
}
function createArchiveListLink($blogid = '', $extra = '') {
global $CONF;
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveListURL'] . '/archivelist_' . $blogid;
else
$link = $CONF['ArchiveListURL'] . '?archivelist=' . $blogid;
return addLinkParams($link, $extra);
}
function createArchiveLink($blogid, $archive, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveURL'] . '/archive_'.$blogid.'_' . $archive;
else
$link = $CONF['ArchiveURL'] . '?blogid='.$blogid.'&archive=' . $archive;
return addLinkParams($link, $extra);
}
function createBlogLink($url, $params) {
return addLinkParams($url . '?', $params);
}
function createBlogidLink($blogid, $params = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['BlogURL'] . '/blogid_' . $blogid;
else
$link = $CONF['BlogURL'] . '?blogid=' . $blogid;
return addLinkParams($link, $params);
}

995行目付近
function addLinkParams($link, $params) {
global $CONF;
if (is_array($params)) {
if ($CONF['URLMode'] == 'pathinfo') {
foreach ($params as $param => $value) {
$link .= '/' . $param . '/' . urlencode($value);
}
} else {
foreach ($params as $param => $value) {
$link .= '&' . $param . '=' . urlencode($value);
}
}
}
return $link;
}
function addLinkParams($link, $params) {
global $CONF;
if (is_array($params)) {
if ($CONF['URLMode'] == 'pathinfo') {
foreach ($params as $param => $value) {
$link .= '_' . $param . '_' . urlencode($value);//←この行もです
}
} else {
foreach ($params as $param => $value) {
$link .= '&' . $param . '=' . urlencode($value);
}
}
}
$link .= ".html";
if(strstr ($link, '//')){ $link = str_replace(".com//", ".com/", $link);} //NP_TrackBack用
if(strstr ($link, '/')){ $link = str_replace("item/", "item_", $link);} //NP_Latest Writebacks用

return $link; }
と変更します。

さらにルートディレクトリの.htaccessを作成します。Fancy URLの分も入れた.htaccessを以下に記載します。
↑注意:ページ幅の関係で本来改行すべきでない箇所で改行されていますが、コピー&ペーストすると適切な場所で改行されますので、.htaccessにコピー&ペーストで貼り付けてください。

私の場合は下記も追加しないとリンク切れが発生してしまいました。

最後に管理ホーム > グローバル設定Fancy URLに設定します。