読者です 読者をやめる 読者になる 読者になる

mod_rewriteでのリダイレクトでパラメータは引き継がない方法

やりたいこと

http://www.example.com/hoge/***/?id=1
にアクセスがあった場合に

http://www.sample.com/hogehoge/
にリダイレクトさせたいというもの。またパラメータ等は引き継ぎたくない

実装方法

RewriteCond %{HTTP_HOST} www(\.example\.com)$
RewriteCond %{REQUEST_URI} ^\/hoge\/(.*)$
RewriteRule ^(.*)$ http://www.sample.com/hogehoge? [L]

でいけました。ちなみにRewriteRuleの1番後ろの「?」があるとパラメータも引き継いでしまい上手くいきませんでした、、、なぜだろう

ついでに動的に引き継ぎたい部分がある場合も

RewriteCond %{HTTP_HOST} www(\.example.\com)$
RewriteCond %{REQUEST_URI} ^\/hoge\/(.*)$
RewriteRule \/hoge\/(.*)$ http://www.sample.com/%1 [L]

こんな感じで書いておけば
http://www.example.com/hoge/piyo
にアクセスがあった際に
http://www.sample.com/piyo
に転送するなんてことも可能。

さいごに

めったに使わないからぜんぜん覚えられないんだけど、個人的にはhttp.confとか.htaccessにこういう設定が増えていくのならphp等のスクリプト側で対応したほうが簡単だし、安全だしって思ってしまいます。confファイルにごちゃごちゃ書きたくないです。まぁ苦手なものをさけてるといつまでたっても覚えられないのですが、、、

以上です