« うーん・・・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から取得するように書き換えれば、うまくいくのではないかと思います。

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2007年1月10日 21:41



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。