サイトの引っ越しなどでURLを別のものに変えたくて、
例えば、
旧サイトURL:https://hoge.com/
↓
新サイトURL:https://fuga.com/
に変えたい。
そういう場合、
旧サイトの、https://hoge.com/ にアクセスしてこられた場合に https://fuga.com/ にリダイレクトさせる。
という処理を設定することが多いですよね?
で、その転送設定って、WebサーバがApacheを使ってる場合、
mod_redirect
を使って設定しますよね?
そのときの注意点です。
実際にやっちゃいました。
サブディレクトリでmod_redirectしていないか、確認すること!
/.htaccess (ドキュメントルート=トップのフォルダ配下に置いた.htacces)に、
mod_redirect を使って、
「アクセスが来たら全部、https://fuga.com/ にリダイレクトさせてね」
っていう処理を書くとするじゃないですか。
そしたら基本、旧サイトの https://hoge.com/ にアクセスされた場合、TOPページだろうが、サブディレクトリ配下のページだろうが、どのページにアクセスされても
新サイトの https://fuga.com/ にリダイレクトされるんです。
が、ここで注意なのが、
旧サイト側の サブディレクトリに mod_redirect (リダイレクト設定など)が設定してあった場合、そのディレクトリ配下には新サイトへのリダイレクトが効かない ってことなんです。
以前にXSERVERでURL正規化するときサブドメインも運用してると予期せぬ動きをするかもよーという記事を書いたことがありまして。ここで言ってることと同じなんですが、
mod_redirectは、
- 下階層で設定している場合、
- 下階層で設定したものが優先され、
- 上階層で設定したものは無視される。
という動きをします。
つまり、
上階層のディレクトリで .htaccess で設定したmod_rewrite 設定は、
下階層のディレクトリで .htaccess で設定したmod_rewrite がある場合、
その下階層のディレクトリ配下に効かないんです。
確認の仕方
旧サイト側で/.htaccess にリダイレクト設定する際、合わせて以下を確認しましょう。
下階層にmod_rewriteが設定されていないか、確認する。
- root権をもらっていないレンタルサーバの場合なら、
- ドキュメントルートにある、/.htaccess 以外にも、サブディレクトリに/.htacess が無いか確認。
- サブディレクトリに/.htaccess がある場合、mod_rewrite処理が書かれていないか確認しましょう。
Linuxの GNU版 grep コマンドで確認する場合、
TOPのディレクトリで、
grep -R mod_rewrite | grep htaccess:
などのコマンドを叩くと確認できるかと思います。
- root権のあるサーバでしたら、
- apacheのconf/ やconf.d/ 配下も確認しましょう。
コメント