dポイントプレゼントキャンペーン実施中!

サブドメインのリダイレクトについて教えて下さい。

http://example.comのサブドメインhttp://sub.example.comを作成しました。
example.comのルートディレクトリにサブドメイン用のフォルダ、subが作成されています。
subフォルダへはhttp://sub.example.comhttp://example.com/sub/の両方でアクセスできます。

http://example.com/sub/にアクセスしたらサブドメイン(http://sub.example.com)にリダイレクト
②サブドメイン(http://sub.example.com)へアクセスしたらhttp://sub.example.com/aaa.htmlにリダイレクト
①、②のリダイレクトを実行するために以下のhtaccessファイルを作成しました。

RewriteCond %{HTTP_HOST} ^example\.com
#①のリダイレクト
RewriteRule ^sub/(.*)$ http://sub.example.com/aaa.html [R=301,L]
#②のリダイレクト
RewriteRule ^sub/$ http://sub.example.com/aaa.html [R=301,L]

しかし、これだと②のリダイレクトが、
URLがhttp://sub.example.com/の場合は正常にリダイレクトされるのですが、
URLをhttp://sub.example.com/abc.htmlなどとした場合にはリダイレクトされません。

そこで、htaccessファイルの3行目を
RewriteRule ^sub(.*)/$ http://sub.example.com/aaa.html [R=301,L]
に変えてみたのですがエラーになってしまいます。

http://sub.example.com/abcなどのURLでアクセスしても、
http://sub.example.com/aaa.htmlにリダイレクトされるようにするためには
htaccessファイルをどのように記述すればいいのでしょうか?

A 回答 (1件)

RewriteRule ^sub(.*)/$

http://sub.example.com/aaa.html [R=301,L]
じゃなくて、
RewriteRule ^sub/(.*)$ http://sub.example.com/aaa.html [R=301,L]
じゃないですか?
で、これだけだと無限ループになるので、コレの前にRewriteCondを使ってリクエストがaaa.htmlである場合を覗かないとダメかも。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

>RewriteRule ^sub/(.*)$ http://sub.example.com/aaa.html [R=301,L]
じゃないですか?
すいません、そうですね、間違えです。

おっしゃる通り無限ループになってしまっているようです。
やはり特定の場合を除くようにしないとダメなのですね。
ありがとうございました。

お礼日時:2016/04/26 12:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!