この記事はGoogleのガイドライン「正規以外の URL には 301 リダイレクトを使用する」を実現する方法を解説しています。
個人ユーザーに人気のレンタルサーバー「ロリポップ」と、法人ユーザーに人気の「さくらインターネット」で動作検証しています。
その他のサーバーでは若干ファイルの内容が異なる可能性がありますが、.htaccessでURL書き換えができるサーバーだと動作すると思います。
目次
URLの正規化とは
レンタルサーバーを借りると、レンタルサーバーのドメインが付与されることが多いと思います。
例えば、ロリポップの場合は「hoge.main.jp」、さくらインターネットなら「hoge.sakura.ne.jp」「www.hoge.sakura.ne.jp」といった感じです。
URLの正規化を行わないと別のURLで同じコンテンツが表示されるということが起きます。
このような事態は、SEO上マイナスです。
下記の例を参考に、自分のサイトをチェックしてみてください。
ポイントは「wwwあり・なし」「index.htmlあり・なし」でアクセスした際のアドレスバーの変化です。
異なるアドレスでアクセスしても、同一のURLに自動的に転送される場合は正規化が完了しています。
下記の例を参考に自分のサイトに異なるアドレスでアクセスしてみてください。同じ内容が表示される場合はこの記事を参考に「.htaccess」を用いてURLを統一しましょう。
http://独自ドメイン.jp/
http://www.独自ドメイン.jp/
http://□□□.ロリポップのドメイン.jp/
http://独自ドメイン.jp/index.html
http://www.独自ドメイン.jp/index.html
http://□□□.ロリポップのドメイン.jp/index.html
たとえばこのサイトの場合は下記のどのパターンでアクセスしても「https://www.ka-partner.tk」(wwwあり、index.htmlなし)へ転送されるように正規化しています。
https://www.ka-partner.tk/
https://www.ka-partner.tk/index.html
https://ka-partner.tk/
https://ka-partner.tk/index.html
設定ファイル(.htaccess)の作成方法
.htaccessは「UTF-8N(BOMなし)」で保存する。
わからない方は、#の行を削除してください。(日本語を使用しない)
OSやエディタによっては、ドットから始まる特殊ファイル「.htaccess」を作成できない場合があります。
その場合は「a.htaccess」などのファイル名で作成し、サーバーにアップロード後「.htaccess」にリネーム(名前を変更)します。
設定ファイルの記述内容について
3つのケースを紹介しています。
- ロリポップのドメイン=独自ドメインのケース(マルチドメイン設定なしのケース)
- ロリポップのドメイン/ディレクトリ=独自ドメインのケース(マルチドメイン設定ありのケース)
- さくらの初期ドメイン=独自ドメインのケース
ロリポップのドメイン/ディレクトリ=独自ドメインのケース(マルチドメイン設定ありのケース)
ロリポップのドメイン:□□□.mail.jp
独自ドメイン:example.jp
サーバーのルート(/)の.htacess
RewriteEngine On
# ロリポップのドメインを独自ドメインに転送
RewriteEngine On
RewriteCond %{HTTP_HOST} ^□□□\.main\.jp
RewriteRule (.*)$ http://www.example.com/$1 [R=301,L]
# www有りのURLに転送
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
# index.html無しのURLに転送
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteRule ^(.*)index.(html|htm|php)$ http://www.example.com/$1 [R=301,L]
ロリポップのドメイン/ディレクトリ=独自ドメインのケース(マルチドメイン設定ありのケース)
ロリポップでマルチドメイン設定しているディレクトリ:□□□.mail.jp/△△△
独自ドメイン:example.jp
サーバーのルート(/)の.htacess
RewriteEngine On
# ロリポップでマルチドメイン設定しているディレクトリを独自ドメインに転送
Redirect permanent /△△△ http://www.example.com
独自ドメインのディレクトリのルートの.htaccess
RewriteEngine On
# www有りのURLに転送
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
# index.html無しのURLに転送
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteRule ^(.*)index.(html|htm|php)$ http://www.example.com/$1 [R=301,L]
さくらの初期ドメイン=独自ドメインのケース
さくらの初期ドメイン:○○○.sakura.ne.jp
独自ドメイン:example.com
サーバーのルート(www)の.htaccessに下記を追加する。
RewriteEngine on
# さくらのドメインを独自ドメインに転送
RewriteCond %{HTTP_HOST} ^(www\.○○○\.sakura\.ne\.jp)(:80)?
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
# さくらのドメインを独自ドメインに転送
RewriteCond %{HTTP_HOST} ^(○○○\.sakura\.ne\.jp)(:80)?
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
# www有りのURLに転送
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# index.html無しのURLに転送
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteRule ^(.*)index.(html|htm|php)$ http://www.example.com/$1 [R=301,L]
参考情報:さくらのマニュアル「wwwというホスト名の有無を統一する(上級者向け)」
設定ファイルをサーバーにアップロードする
設定ファイルが完成したらサーバーにアップロードします。
すでにサーバー上にファイルが存在する場合は、注意してください。
一旦サーバーのファイルをダウンロードし、今回の内容を追記したうえでアップロードするようにして下さい。
アップロード後は、パーミッションを変更します。
ロリポップの推奨パーミッションは「604」、さくらも「604」でOKです。
FFFTPの場合は、サーバー上のファイルを右クリックして「属性変更」から選択できます。
アップロード後の確認
アップロードが完了したら、wwwあり・なし、index.htmlあり・なし、レンタルサーバーのドメインなどでアクセスし、適切に転送されているか確認してみてください。