【EC-CUBE 4】wwwやindex.phpを含むURLから含まないURLへ自動転送する

EC-CUBEでは、以下のように「www」や「index.php」が含まれたURLでもサイトにアクセスできてしまいます。

  • https://ドメイン/
  • https://www.ドメイン/
  • https://ドメイン/index.php
  • https://www.ドメイン/index.php

上記のいずれのURLでも、同じトップページにアクセスできます。

このままでもサイト運営上は特に問題ないように思えますが、Googleサーチコンソールでは以下のように重複コンテンツの指摘を受ける原因になってしまい、SEO的にあまりよろしくありません。

wwwやindex.phpが付いたページが混在し、重複表示が出ている
index.phpが付いた方のみがインデックスされている

そこで本記事では、URLの表示を統一(URLを正規化)する方法を紹介します。
SEO対策としても有用ですので、未実施の方はやっておいて損はないかと思います。

目次

.htaccessファイルを修正し、リダイレクトさせる

wwwやindex.phpが含まれるURLにアクセスした際、それらが含まれないURLに自動転送(リダイレクト)させることで解決します。リダイレクトの設定は、ルートディレクトリに保存されている.htaccessファイルで行います。

.htaccessをダウンロードし、<IfModule mod_rewrite.c>タグ内のRewriteEngine Onの下に、リダイレクトの条件を書き加えます。

.htaccessを修正するときは必ずバックアップを取っておき、元に戻せるようにしておきましょう。
ちょっとした記述ミスにより、サイトが表示されないなどのトラブルになる場合があります。

wwwありのURLからなしのURLにリダイレクト

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
  • https://www.ドメイン → https://ドメイン
  • https://www.ドメイン/XXX → https://ドメイン/XXX

wwwなしをwwwありへリダイレクトしてもよいですが、URLは短いほうが入力しやすいので「wwwなし」に統一する方がオススメです。

index.phpありのURLからなしのURLにリダイレクト

# index.phpの直後に何もない、またはスラッシュのみの場合にルートにリダイレクト
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php/?\s [NC]
RewriteRule ^index\.php/?$ / [R=301,L]

# index.phpに続くパスが指定された場合にリダイレクトを行う
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php/(.+)\s [NC]
RewriteRule ^index\.php/(.+)$ /$1 [R=301,L]
  • https://ドメイン/index.php → https://ドメイン
  • https://ドメイン/index.php/XXX → https://ドメイン/XXX

これで、index.phpをすべて取り除いたURLにすることができます。

追記コードまとめ

<IfModule mod_rewrite.c>タグ内のRewriteEngine Onの直後に、以下コードを追記します。
(他の既存ルールとの衝突を避けるため、RewriteEngine Onの直後/他のルールの前に配置します。)

# wwwありのURLからなしのURLにリダイレクト
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# index.phpの直後に何もない、またはスラッシュのみの場合にルートにリダイレクト
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php/?\s [NC]
RewriteRule ^index\.php/?$ / [R=301,L]

# index.phpに続くパスが指定された場合にリダイレクトを行う
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php/(.+)\s [NC]
RewriteRule ^index\.php/(.+)$ /$1 [R=301,L]

変更後は、ブラウザのキャッシュをクリアするか、プライベートモードでテストして期待通り動くか確認してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次