ど~しても解決できなかったので質問させてください。
仮に運営しているドメインがhttp://www.exsample.comだったとして
別のドメインで検索エンジンにインデックスされてしまい、それを消すことができません。
レンタルサーバーのマスタードメインのようなものがインデックスされているのです。
これを.htaccess使って301リダイレクトしたいのですが、トップページだけはうまくいって、それより下の階層には適用されません。
RewriteEngine On
RewriteCond %{http_host} ^○○.▲▲▲.jp
RewriteRule ^(.*) http://www.exsample.com/$1 [R=301,L]
http://www.○○.▲▲▲.jpにアクセスするとhttp://www.exsample.com/にリダイレクトされますが、
http://www.○○.▲▲▲.jp/test/
とアクセスすると、
http://www.exsample.com/test/
とならず、
http://www.○○.▲▲▲.jp/test/に普通にアクセスできてしまうのです。
書き方の問題だとは思いますが、よい方法はないですか??
一応このやり方でも、2~3ヶ月すればインデックスは消えるよ・・・みたいなことは書いてあったのですが
RewiteRuleが間違っている。
下記のように記す。
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
経験談ですが、「test」のディレクトリに「RewriteEngine On」という記述がある .htaccess が存在すると、リダイレクトされないみたいです。
.htaccess は下位のディレクトリの設定が優先されることに関連しているのだと思います。
この場合、「test」ディレクトリの .htaccess に以下のように書き足せば、リダイレクトされるようになりました。
RewriteCond %{http_host} ^www\.○○\.▲▲▲\.jp RewriteRule .* http://www.exsample.com%{REQUEST_URI} [R=301,L]
あと、細かい話ですみませんが、「^○○.▲▲▲.jp」だと、www.○○.▲▲▲.jp は引っかからないように思えます。
はじめ「^www\.○○\.▲▲▲\.jp」か、「○○\.▲▲▲\.jp」のような書き方をしていたものを、ドメインを伏せる際に書き間違えただけなのかなとも思いましたが。
$ がないから…かな?
http://hoge.example.com/test/ を http://example.com/test/ にリダイレクトしたいとして、
RewriteEngine On
RewriteCond %{HTTP_HOST} ^hoge\.exsample\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301]
でどうでしょうか。
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NE,L]
で動作するはずです。
そもそもの問題として別のドメインで検索エンジンにインデックスされているものを消したければ、そのサイトで404を返すようにするのが筋です。
301でmod_rewriteをかけるのはドメイン移転の際の手法であり、旧ドメインのインデックスを消したければ旧ドメインの方で404を返すのが手っ取り早い方策となります。
多分、301移転をかけたいのは旧サイトのインデックスを新サイトに移したいとの意図があるのではないかと思いますが、検索エンジンが新サイトを巡回するようになれば、301移転をかける意味はなくなります。また、被リンク数をランクのウェート計算に用いているGoogleのようなロボット検索エンジンの場合、301移転をかけたところで旧サイトの被リンクは旧サイトを指しているままとなりますので、301移転をかけたところで新サイトのランクは上がるといったことはありません。
旧サイトと同じ内容で新サイトとかを立ち上げた場合、被リンク数はゼロからのスタートとなりますので、301移転をかけたところでランクは最初からやり直しとなります。
<301でmod_rewriteをかけるのはドメイン移転の際の手法であり、旧ドメインのインデックスを消したければ旧ドメインの方で404を返すのが手っ取り早い方策となります。
本来の質問では想定していませんでしたが、とても参考になりました。ありがとうございます。参考にさせていただきます。