ノリブログ?

mod_rewriteでの書き換え後のURLにQUERY〜STRINGを使用する

カテゴリー:Web


mod_rewriteでURLを書き換える際に、書き換え後のURLにQURY STRINGを入れる方法に苦労したので、その記録を書いておきます。

mod_rewriteでのURL書き換え例(QUERY STRINGを含まない場合)

まずはQUERY STRINGを使わない場合について説明します。

  • index.phpをindex.htmlでアクセスできるようにする。
RewriteEngine on
RewriteRule ^index.html$ index.php [L]
  • すべてのphpファイルを拡張子htmlでアクセスできるようにする。
RewriteEngine on
RewriteRule ^(.+).html$ $1.php [L]

書き換え前にQUERY STRINGを含む場合

次に書き換え前のアドレスにQUERY STRINGを含む場合

たとえば
http://www.hogehoge.com/hoge.php?name=yamada&pref=tokyo
というURLを
http://www.hogehoge.com/yamada/tokyo/hoge.php
と書き換える場合は以下のようにします。

RewriteEngine on
RewriteRule ^(.+)/(.+)/hoge.php$ index.php?name=$1&pref=$2

書き換え後にQUERY STRINGを含む場合

 たとえば
http://www.hogehoge.com/hoge.php?name=yamada&pref=tokyo&id=1111
というURLを
http://www.hogehoge.com/yamada/tokyo/hoge.php?id=1111
と書き換える場合は以下のようにします。

RewriteEngine on
RewriteCond %{QUERY_STRING} id=(.+)$
RewriteRule ^(.+)/(.+)/hoge.php$ hoge.php?name=$1&pref=$2&id=%1

追記

上のQUERY STRINGを含む場合の方法だと3行でやっていますが、以下のようにすると、もっとシンプルに行うことができることがわかりました。

RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/hoge.php$ hoge.php?name=$1&pref=$2&%{QUERY_STRING} [L]

参考にしたサイト 

Apache mod_rewrite モジュールの和訳

muumoo.jp:RewriteCond で QUERY_STRINGを使う具体的な例がありました。

 

 

 

 

関連記事

Track Back URL

name
E-mail(省略可)
URL(省略可)
コメント