URL正規化とは
WebサイトのURLを統一すること。
SSL証明書ど導入しており、https:// で接続できるサイトだけど、
- http:// でも接続できる
- https:// でも接続できる
みたいな状況だとSEO的にもあまりよろしくないし、気持ち悪さもある。
なので、
http://で接続してきた人も、
https:// に転送することで
https:// に統一してしまおう
みたいなこと。
http https 以外にも、
www 有りか無しかを統一したりもする。
なので、
- https://www.example.com
- https://example.com
のいずれかに統一されることがほとんどだと思う。
URL正規化のためにする具体的な設定
.htaccess にリダイレクトの記述をする。
具体的な記述内容はこちらの記事を参照。
上記の設定を行った場合に発生する不具合
XSERVER で、ルートドメイン(例:example.com)全体に効くように、/.htaccess でURL正規化を行った場合、
且つ、
そのルートドメイン配下にサブドメイン(例:sub.example.com)の別サイトを作成した場合、
ルートドメインで設定したURL正規化の設定が、サブドメインのサイトにも適用されてしまう。
XSERVERでは、ディレクトリ構造が以下のようになっている。
example.com/
| – .htaccess
| – index.html
| – sub/
| – .htaccess
| – index.html
上記の、.htaccessに設定したURL正規化の設定が、sub/配下に適用されてしまう。
そうすると何がまずいのかというと、例えば、
example.com のサイトでは、https://www.example.com/ でアクセスするようにURL正規化したとする。
しかし、sub.example.comは、http://sub.example.com でアクセスできるが、
- http://www.sub.example.com
- https://sub.example.com
などは設定されていないためアクセスできない
という状況のときに、sub.example.comが閲覧できない。
ということになる。
不具合が起きないようする対策
いろいろ書き方がある。
example.com/.htaccess に書く場合
RewriteBaseにサブディレクトリを記述し、に、必要な部分だけURL正規化を記述する
不具合が起きるのは、
RewriteBase /
と、ベースとなるディレクトリをトップディレクトリに設定する場合。
なので、ここを
RewriteBase /sub/
などとしてあげれば良いはず。(未検証)
example.com/sub/.htaccessにも記述する
example.com/.htaccess
に
RewriteBase /
と、ベースとなるディレクトリをトップディレクトリに設定する場合でも、
sub.example.com/.htaccess にもURL正規化を記述してあげれば、上位階層のURL正規化設定(mod_rewrite)は、無視される。
サブドメインが少ない&今後もあまり増える予定はない という場合にはこの方法がベストと思う。
example.com/.htaccess にURL正規化を書かずに、必要な部分だけURL正規化を記述する
暗号化が必要なページなど、必要なページのみhttps化を実施する。
例)
- example.com/contact/.htaccess
- example.com/shopping/.htaccess
example.com配下全体がURL正規化されないため、あまり推奨されないが、サブドメインのサイトが多すぎて全体に影響及ぼすのが怖いって場合には検討して良い手段の一つと思う。
コメント