March 30, 2005
Nucleus の FancyURL から MagicalURLへ
昨日は なんとかURLをFancyURL にすることが出来ました。^^
という事で 調子に乗って、
今日は FancyURL から MagicalURL にチャレンジし、
なんとか無事に対応する事ができました?
とっても参考にさせていただきましたHP
- 備忘録とかもろもろさん コメントでのやり取りが 特に役立ちました! といいますか、このやりとりが無ければ 挫折してました。(^^;;
- Nucleus(JP)フォーラム Forum
感謝の心でイッパイです?(;o;
ちなみに
- 通常のURL http://blog.kimonoland.net/?itemid=13
- FancyURL に変更すると。。 http://blog.kimonoland.net/item/13
- 更に MagicalURL に変更すると。。 http://blog.kimonoland.net/item_13.html
となります^^
とりあえず ルートのindex.phpを 別フォルダ[maji-test]にコピーし
【index.php】の中身を
// This file will generate and return the main page of the site
$CONF['Self'] = "http://blog.kimonoland.net";
include('config_f.php');
selector();
?>
としました。
続いてconfig.php を別フォルダ[maji-test]にコピーし
config_f.phpにリネームして保存します。
ソースの最後のほうを↓のように変更します。
// include libs
include($DIR_LIBS.'globalfunctions_f.php');
if (!extension_loaded('mbstring')) {
include($DIR_LIBS.'mb_emulator/mb-emulator.php');
}
そしてそして、
globalfunctions.php を別フォルダ[maji-test]にコピーし
【globalfunctions_f.php】にリネームして保存
210行目付近を
// decode path_info
if ($CONF['URLMode'] == 'pathinfo'){
$data_str = preg_replace("/.html$/",'', serverVar('PATH_INFO'));
$data = explode("_",$data_str);
for ($i=0;
870行目付近から
/**
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'] . '/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);
}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;
}
【action.php】 を別フォルダ[maji-test]にコピーし
16行目付近を変更
$CONF = array();
include('config_f.php');
そして【.htaccess】も別フォルダ[maji-test]にコピー
備忘録とかもろもろさんの
RewriteRule ^catid_([0-9]+).html+ index.php?catid=$1
【.htaccess】の中身はこんな感じ
RewriteEngine On
RewriteRule ^catid_([0-9]+)_blogid_([0-9]+).html+ index.php?catid=$1&blogid=$2
RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3&blogid=$1
RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3-$4&blogid=$1
RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+)_catid_([0-9]+).html+ index.php?archive=$2-$3&blogid=$1&catid=$4
RewriteRule ^catid_([0-9]+)_blog_([0-9]+)_archive_([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$3-$4-$5&blogid=$2&catid=$1
RewriteRule ^catid_([0-9]+)_blog_([0-9]+)_archive_([0-9]+)-([0-9]+).html+ index.php?archive=$3-$4&blogid=$2&catid=$1
RewriteRule ^catid_([0-9]+).html+ index.php?catid=$1
RewriteRule ^catid_([0-9]+)_subcatid_([0-9]+).html+ index.php?catid=$1&subcatid=$2
RewriteRule ^archives_([0-9]+).html+ index.php?archivelist=$1
RewriteRule ^archives_([0-9]+)_catid_([0-9]+).html+ index.php?archivelist=$1&catid=$2
RewriteRule ^catid_([0-9]+)_archives_([0-9]+).html+ index.php?archivelist=$2&catid=$1
RewriteRule ^member_([0-9]+)_catid_([0-9]+).html+ index.php?memberid=$1&catid=$2
RewriteRule ^member_([0-9]+).html+ index.php?memberid=$1
RewriteRule ^item_([0-9]+)_catid_([0-9]+).html+ index.php?itemid=$1&catid=$2
RewriteRule ^item_([0-9]+).html+ index.php?itemid=$1
RewriteRule ^item_([0-9]+)_subcatid_([0-9]+).html+ index.php?itemid=$1&subcatid=$2
RewriteRule ^blog_([0-9]+).html+ index.php?blogid=$1
そして 必要があれば
Nucleus(JP)フォーラム Forumの
RewriteRule ^archivelist_([0-9]+).html+ f.php?archivelist=$1
から
RewriteRule ^archives_([0-9]+).html+ f.php?archivelist=$1
と archivelist から archivesへ 修正します。
そのあと、[maji-test]フォルダに作成した
【index.php】【config_f.php】【action.php】はルート、
【globalfunctions_f.php】を /nucleus/libs フォルダに入れて
正常に動けばOK?!ダメだったら 急いで 元のファイルを戻します。




