« うーん・・・Optimistにやられる。 | メイン | 禁煙しますた。 »
2007年1月10日
SEO対策としてMTPaginateを見直す:拡張子変更の対応 >>MovableType
20061221のエントリで掲載していたのが最終かと思っていましたが、アーカイブ・マッピングで.html等として吐き出す場合にうまくいかないことがある、というご報告をYoshitomi さん より頂きました。
尚、.htmlで、phpを動かすには、
RemoveHandler .html
AddType application/x-httpd-php .php .html
とか書いとく、という感じですね。
さて、Paginate2.pl(パッチ適用後のもの)で93行
$paginate_url = &MT::Template::Context::_hdlr_archive_link;
となっており、ここでアーカイブページの基底となるURLが取得できるはずなのですが、index.htmlにするとどうもうまくないようです。
実際に埋め込まれたファイル上では$paginate_self = 'http://debz-di.kabocha.to/archives/cat2/cpu//' となってしまっています。
MovableType側の問題のような気がするわけですが、そこまで追うのも手間なので、とりあえずの対応方法ですが・・・
行365:
\$paginate_self = '$paginate_url/' . \$paginate_page_selector;
を
\$paginate_self = '$paginate_url' . 'index.html/' . \$paginate_page_selector;
と、記述すれば(直値であまりよろしくないですが)、とりあえずは対処できそうな気がしますが、いかがでしょうか。
追記:2007/01/11 22:58
PHP-CGIで、PATH_INFOが取れていないという場合も有り得るようですね。
例えばですが、
.htmlとして
<html>
<head>
</head>
<body>
test<br>
<?
$path_info = $_SERVER{'PATH_INFO'};
print $path_info;
?>
</body>
</html>
というようなPHPのスクリプトファイルを生成し、test.php/aaaaaaaaa
などとした場合、path_infoの値が表示されますか?
表示されるのであれば、何かしらpaginate2.pl側でミスっています・・・。
もし、表示されないのであれば、PHP側で制限がかかっています。
http://angelicwing.net/diary/index.php?mode=one&parent_id=3853
にありますが、
cgi.fix_pathinfo=1
としておき(.htaccessで書くとちょっと違いますが)
$_SERVER['ORIG_PATH_INFO']
を参照するようにすれば大丈夫です。
たとえば
$pathinfo_index = isset($_SERVER['ORIG_PATH_INFO']) ? 'ORIG_PATH_INFO' : 'PATH_INFO';print $_SERVER[$pathinfo_index];
その上で、paginate2.pl で path_info としているところを上記の$_SERVERから取得するように書き換えれば、うまくいくのではないかと思います。
投稿者 debizoh : 2007年1月10日 21:41
トラックバック
現在、この記事はトラックバックを受け付けておりません。
コメント
現在、この記事はコメントを受け付けておりません。