Nucleus
FancyURLsモードで新しいblogをサブディレクトリに置いた場合のitemlink
FancyURLsモードで新しいblogをサブディレクトリに設置すると、デフォルトではテンプレート変数<%itemlink%>の返す値は、
http://www.tyada.com/music/index.php?itemid=253
のようになってFancyURLsしてくれない。できれば、
http://www.tyada.com/music/item/253
でアクセスしたいのが人情ってもんだ。
# と言いつつ、長い間放っていたが。
<%itemlink%>の値を正しくFancyURLsさせるには、/music/index.phpの中の$CONF['Self']の値を以下のように変更する。
$CONF['Self'] = '/music';
もしくは相対パスなら、
$CONF['Self'] = '.';
また、上記のリンクをアクセスすると 404 Error - Not found になってしまうので、サブディレクトリmusicの中に以下のitemファイルを作っておく。
<?
include('../fancyurls.config.php');
include('../config.php');
$data = explode("/",serverVar('PATH_INFO'));
$itemid = intval($data[1]);
selectBlog('music');
selector();
?>
テンプレート変数<%itemlink%>は、/nucleus/libs/globalfunctions.phpのcreateItemLink関数で$CONF['URLMode']の値に従って返されるが、この関数の直前に$CONF['Self']の値が.phpで終わっていたら、FancyURLsモードからNormalモードに戻す以下の処理がある。
// switch URLMode back to normal when $CONF['Self'] ends in .php
// this avoids urls like index.php/item/13/index.php/item/15
if ( ($CONF['URLMode'] == 'pathinfo')
&& (substr($CONF['Self'], strlen($CONF['Self']) - 4) == '.php')
) {
$CONF['URLMode'] = 'normal';
}
サブブログをサブディレクトリに設置すると、$CONF['Self']の値はサブディレクトリ内のindex.phpの中で定義されるが、デフォルト設定では$CONF['Self']の値は'index.php'と'.php'で終わっているため、Normalに戻ってしまう。
かといって、マニュアルの「便利な使い方ヒントの紹介 - Googleなどのサーチエンジンに引っかかりやすくする方法 - Fancy URLモード」の記述のように
同様にindex.phpファイルの$CONF['Self']の値を編集(引用符の中を削除)
してしまうと、<%itemlink%>の返す値は
http://www.tyada.com/item/253
になってしまう。そこで、
$CONF['Self'] = '/music';
とすれば、うまく行く。
Related
Local search for: FancyURLsモードで新しいblogをサブディレクトリに置いた場合のitemlink
No related items.TrackBack
Comments
_ buy fioricet online
<a href=http://www.tcnj.edu/~wurpel...>buy fioricet</a>

