http://AAA.jp/の内容とhttp://BBB.jp/の内容は同一サーバーにある同じファイルです。
http://AAA.jp/を全てhttp://BBB.jp/で表示されるようにリダイレクトをかけたいのですが、
http://BBB.jp/NNN/MMM/以下のみhttps://AAA.jp/NNN/MMM/で表示させたいのです。
RewriteCond %{HTTP_HOST} ^AAA\.jp
RewriteRule ^(.*)$ http://BBB.jp/$1 [R=301]
↑
上記記述でドメインの転送は出来たのですが、
これだけだと、
https://AAA.jp/NNN/MMM/にアクセスした場合、http://BBB.jp/NNN/MMM/と表示されてしまいます。
そこで、
RewriteRule ^NNN/MMM(.*)$ https://AAA.jp/NNN/MMM$1 [R=301,L]
や
Redirect permanent /NNN/MMM/$ https://AAA.jp/NNN/MMM/
を
追記してみたのですが、やはりドメインが転送されhttp://BBB.jp/NNN/MMM/で表示されてしまいます。
NNN/MMM/以下を表示させる時のみhttps://AAA.jp/NNN/MMM/で表示され、それ以外はhttp://BBB.jp/で表示されるには.htaccessをどのように記述すればよいでしょうか?
よろしくお願い致します。
RewriteCondで除外ディレクトリを指定するといいです。
RewriteEngine on RewriteCond %{HTTP_HOST} ^AAA\.jp RewriteCond %{REQUEST_URI} !/?NNN/MMM/? RewriteRule ^(.*)$ http://BBB.jp/$1 [R=301,L]
【追記】
上記の記述でAAA.jpへのアクセスはAAA.jp/NNN/MMM/以下を除いてBBB.jp/~にリダイレクトされるはずですが、BBB.jp/NNN/MMM/以下へのアクセスをAAA.jp/NNN/MMM/以下へリダイレクトさせるのでしたら、以下の記述も追加してみてください。
RewriteCond %{HTTP_HOST} ^BBB\.jp RewriteCond %{REQUEST_URI} /?NNN/MMM/? RewriteRule ^/?NNN/MMM(.*)$ http://AAA.jp/NNN/MMM$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^AAA\.jp
これがそもそも間違いの元です。BBB.jp → AAA.jpとしたいなら・・・
RewriteCond %{HTTP_HOST} ^BBB\.jp
ですね。
以下、RewriteRuleとRewriteMatchを駆使すれば、したい事が出来るはずです。
RewriteCondで除外ディレクトリを指定するといいです。
RewriteEngine on RewriteCond %{HTTP_HOST} ^AAA\.jp RewriteCond %{REQUEST_URI} !/?NNN/MMM/? RewriteRule ^(.*)$ http://BBB.jp/$1 [R=301,L]
【追記】
上記の記述でAAA.jpへのアクセスはAAA.jp/NNN/MMM/以下を除いてBBB.jp/~にリダイレクトされるはずですが、BBB.jp/NNN/MMM/以下へのアクセスをAAA.jp/NNN/MMM/以下へリダイレクトさせるのでしたら、以下の記述も追加してみてください。
RewriteCond %{HTTP_HOST} ^BBB\.jp RewriteCond %{REQUEST_URI} /?NNN/MMM/? RewriteRule ^/?NNN/MMM(.*)$ http://AAA.jp/NNN/MMM$1 [R=301,L]
これでどうでしょう?
2012/06/27 17:50:42これが効かないと、ループになってしまうので、この行が正しく無いのが原因だと思います。
これでもだめですかね?
2012/06/28 09:23:35