mod_rewrite 複数のパラメーターを書き換え
Apache .htaccess でURLを書き換えで書いたように、.htaccessにmod_rewriteの指定を書くことで、動的なURLも静的なURLに見せかけることができます。
複数のパラメーターがある時はどうでしょう。
たとえば
http://hogehoge.jp/index.php?action=search&prefecture=1
というURLを
http://hogehoge.jp/search?prefecture=1
としたいのであれば、Apache .htaccess でURLを書き換えで書いた.htaccessの書き換えルールの末尾を変えて
RewriteRule ^([0-9a-zA-Z_/-]+)$ index.php?action=$1 [QSA,PT]
とします。
[QSA]は、「Query String Append」の略で、引数をつけたいときに使うフラグだそうです。
(By http://d.hatena.ne.jp/hato_mune/20080928/1222569429)
でもどうせだったら
http://hogehoge.jp/search?prefecture=1
じゃなくって、全部静的にしたいじゃないですか。
http://hogehoge.jp/search/prefecture/1
みたいに。
そのためには.htaccessに
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ index.php?action=$1&$2=$3 [QSA,PT]
と書いておきます。
これで、ユーザーがアクセスする静的なURL
http://hogehoge.jp/search/prefecture/1
は実際には
http://hogehoge.jp/index.php?action=search&prefecture=1
にアクセスしていることになります。
パラメーターが増える場合は、rewrite ruleの正規表現とパラメーターを増やして
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ index.php?action=$1/$2&$3=$4 [QSA,PT]
などとします。
mod_rewrite難しい~
もっとスマートなやり方があれば、教えてください。