やりたいこと
.htaccessのrewiteを使用し、同じドメイン内である画面すべてを特定のページ(/gate)へリダイレクトをしたい
ただしhoge1,hoge2 ディレクトリ以下はすべてリダイレクトしない。除外する。
除外ディレクトリ以下以外はすべて/gateへリダイレクトしたい
条件
・同一ドメイン内
・URLは、末尾にスラッシュがついているもの、そうでないもの、パラメータがあるもの
混在している
・https使用
やってみたこと1
RewriteCond %{REQUEST_URI} !(^/hoge1) RewriteRule ^$ /gate [R=301,L] RewriteCond %{REQUEST_URI} !(^/hoge2) RewriteRule ^$ /gate [R=301,L] RewriteEngine On RewriteBase /
やってみたこと2
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !(^/hoge1) [OR] RewriteCond %{REQUEST_URI} !(^/hoge2) RewriteRule ^$ /gate [R=301,L]
現在のところ,やってみたこと1,2とも以下の結果となりました
1)除外ディレクトリ以外でもパラメータを持っているURLは/gate へリダイレクトしない
2)URLの末尾にスラッシュがついている場合は/gateへリダイレクトしない
1,2を解消するには、.htaccessをどのように書き換えるのがよいでしょうか?
よろしくお願いします
RewriteCond の行に [AND] をつけて、2行目のRewriteRuleは行削除すればどうだろうか? ちなみに、RewriteEngine OnとかRewriteBaseとかは最初の行に書くべきでは。 文法的なものは http://httpd.apache.org/docs/current/mod/mod_rewrite.html
ありがとうございます。
そのとおりやってみたのですが、結果は同じでした。
スラッシュのないURLはリダイレクトされず、パラメータをもっているURLもリダイレクトされないという結果でした。
RewriteEngine OnとかRewriteBaseも先頭に移動しました。
どこが良くないのか、かなり調べたのですがかいけつしないです。
回答2件
あなたの回答
tips
プレビュー