以前から挑戦し続けていた「mod_rewrite を用いてURLを簡素化する」ことに成功しました。嬉しい。
仕様サーバーはいつもの、USBメモリに入れて持ち運べる便利サーバーXSAS。
例として「Movabletype」というキーワードを用いてみます。
このキーワード検索結果のページURLが
http://ブログURL/mt/mt-xsearch.cgi?blog_id=1&search_key=Tagwire&search=Movabletype
として表示されるのを、
http://ブログURL/keywords/Movabletype
としてしまうことです。
前提
MT3.3以降、Tag機能が正式にサポートされたために、このサイトでは「Tag」と「Keywords」を区切ってます。
また、XSASサーバー上ではひらがな・漢字等2byte文字をテストしたところ、キーワード検索結果画面等で文字化けを起こして使えませんでした。
しかし、予想通りXREAサーバーではきちんと使う事が出来ました。
以上を踏まえた上で動作試験。
.htaccess への記述
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^keywords/(.*)$ /mt/mt-xsearch.cgi?blog_id=1&search_key=Tagwire&search=$1 [QSA,L]
</IfModule>
テンプレート修正
<MTEntryTags glue=", ">
<a href="<$MTBlogURL$>keywords/<$MTTag encode_url="1"$>"><$MTTag$></a>
</MTEntryTags>
以上で、XSASローカルサーバーでも mod_rewrite を用いてURLを簡素表記出来ます。
「keywords」の箇所を「tags」なんかに変更すれば、URL表記は
http://ブログURL/tags/Movabletype
に変ります。
余談
これに気付いたのは、Wordpressでパーマネントリンク変更を弄ってる時。
「Options +FollowSymLinks」の追記がなければmod_rewriteが動かないというので、だったらWordpressで生成されるhtaccessをマネマネすれば良いじゃないか!って感じです。
Wordpressが本当に意外なところで役立ちました。
文字化けの件は辛いところです、正直。
なるべくXREAと同様の状態に近づけて、そこでテストをしてから本鯖に導入、という手順を踏んでいるのですが、いかんせんサーバー関連の知識不足(他も・・・)なために、こういった異なる状況が生まれつつあります。。。
見たところ、以前の長いURL記述では、検索結果に2byte文字であってもきちんと出力されて使えているのですね。
ちょっと整理。
変更前 | mod_rewrite後 | |
XREA | ○ | ○ |
XSAS | ○ | × |
いったいこの違いはどこから来るのかなぁ?と問題の切り分けも出来ずにたたずむばかりです。
mod_rewrite を使用された場合の16進数→HTMLエンコードがちゃんと出来てないってことなのかなぁ?
(´・ω・)=3
[参考記事]
■TagwireとMT-XSearchによる動的タグアーカイブ - Ogawa::Memoranda [Ogawa::Memoranda]