キーワードアーカイブへのリンクURLを簡潔にする - mod_rewrite

以前から挑戦し続けていた「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

としてしまうことです。


関連:Tagwire+mt-xsearchでTag Cloudを作成する

前提

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でパーマネントリンク変更を弄ってる時。

関連:WPをXSASでインストールしてUTF運用失敗

「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]

mod_rewrite で動的タグアーカイブURLを書き換える - pur*log [pur*log]

▲ to Top

トラックバック(0)

▲ to Top