htaccess rewritemod クエリ

htaccessのmod_rewriteに関するメモ。

RewriteRuleの置換前URLにはクエリー文字(URLパラメータ・GETパラメータ)は含まれない。クエリー文字の書き換えにはRewriteCondを利用する。

し、知らんかった…

で、出来た.htaccessがこれ。


RewriteEngine on

RewriteRule ^$ http://gfdb.info/? [R=301,L]
RewriteRule ^index\.html$ http://gfdb.info/? [R=301,L]

RewriteCond %{QUERY_STRING} ^page=term$
RewriteRule ^index\.php$ http://gfdb.info/? [R=301,L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.php$ http://gfdb.info/? [R=301,L]

RewriteCond %{QUERY_STRING} ^user=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/user-%1.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^club=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/club-%1.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^event=([CMRSW][0-9.]+)$
RewriteRule ^index\.php$ http://gfdb.info/user-ranking-%1-1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^event=([CMRSW][0-9.]+)&page=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/user-ranking-%1-%2.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^cevent=([CMRSW][0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/club-ranking-%1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^event=([CMRSW][0-9.]+)&club=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/user-ranking-%1-inclub-%2.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^user-history=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/user-history-%1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^club-history=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/club-history-%1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^old-members=([0-9]+)$
RewriteRule ^index\.php$ http://gfdb.info/club-old-members-%1.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^border=([CMRSW])$
RewriteRule ^index\.php$ http://gfdb.info/border-%1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^border=R.5$
RewriteRule ^index\.php$ http://gfdb.info/border-R0.5.html? [R=301,L]

もうちょっと綺麗に書けるかもしれないけど…。

htmlの後ろの?は置換後のURLにクエリーを付加しないようにするため。これが無いと~.html?user=~みたいに気持ち悪い事になっちゃう。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です