SSL対応したホームページのURLを.htaccessで統一する

access_time

SSL対応したホームページのURLを.htaccessで統一する

ホームページを公開するにあたって、サーバーにドメインを登録すると、ほとんどのレンタルサーバーではデフォルトでURLが2つ登録されます。シンプルな取得したドメインと、頭に「www」のついたサブドメインです。

昔は「www」とつくだけで「ホームページ」という印象が強かったのかメインのドメインとして利用する場合もありますが、最近は短いURLを利用する傾向にあるように感じます。

統一されていれば特に問題ないのですが、古いホームページや今からSSL対応します!というホームページを見てみると大抵統一されていないのでコピペで対応できるように.htaccessに追記するメモを残しておきます。

URLについて

先程も書きましたが、一つのドメインをサーバーに登録するとURLが2つ登録されます。さらにSSL対応を行うとURLがさらに2つ登録される事となります。
さらに、トップページに当たるURLは「index.html」の有無で更に倍にURLの数が増えます。「tilenote.com」のURLの場合はこんな感じ。

  1. http://tilenote.com/
  2. http://www.tilenote.com/
  3. https://tilenote.com/
  4. https://www.tilenote.com/
  5. http://tilenote.com/index.html
  6. http://www.tilenote.com/index.html
  7. https://tilenote.com/index.html
  8. https://www.tilenote.com/index.html

1.2.は標準で登録されるドメイン、3.4.はSSL対応をしたときのURLとなります。
コレに「index.html」(場合によってはindex.php)の有無も含めてトップページのURLは8種類にもなるわけです。

検索エンジンはこれを個別のURLとして認識してしまうためURLを統一して、どのURLにアクセスしても「一つのアドレスです」としておく必要があります。
Google Search Consoleに重複コンテンツがある場合、メタタグのcanonicalでURLを指定していないか確認しておきましょう。
大体コレが原因かと思います。

統一するURLを決めておく

まずは、統一するURLを決めておく必要があります。
SSL化が推奨されており、無料で設定できる事もあるため、https://で統一します。また、「index.html」の有無に関しては特別な理由がない限りは無しに統一で問題ないと思いますので、URLは下記の2つから選ぶ事となると思います。

  • https://ドメイン名/
  • https://www.ドメイン名/

すでに印刷物等でQRコードを発行していたり、チラシにホームページのURLを掲載している場合でも、.htaccessでリダイレクトの設定を行うのであまり難しく考えずに好みの範囲かクライアントの要望によって選んでいいかと思います。
私の場合は、Twitterでの文字数の入力制限があったりと短いURLの方が何かと良いと思うので「どっちでもいい」という場合はwww無しのURLに統一することにしています。

URLを統一する.htaccessの書き方

統一するURLを決めたら早速.htaccessを書きます。
ホームページを公開しているサーバーのディレクトリの一番上の階層(ルートディレクトリ)にある.htaccessをダウンロードします。
無い場合は「.htaccess」というファイルを作成します。

注意したいのは、FTPソフトでサーバーに接続しても隠しファイルになっている場合があるので、不用意に上書きしないように注意してください。
また、誤った記載をした場合にホームページが見られなくなったりしますので必ずバックアップをとってから作業するようにしてください。
レンタルサーバーによって書き方が異なったり、パーミッションの設定の仕様等細かい違いがありますので各レンタルサーバーの仕様に従ってください。

ワードプレスで作成したホームページの場合はルートディレクトリに.htaccessが生成されていますので、それを上書き削除等しないように注意して編集してください。バックアップを忘れずに…

www無しのURLの統一する

# wwww無しに統一
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.ドメイン名
RewriteRule ^(.*)$ http://ドメイン名/$1 [R=301,L]

# index.html無しに統一
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://ドメイン名/$1 [R=301,L]

# httpsに統一
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

上記を.htaccessの適当な場所に貼り付けて3、4、9行目にある「ドメイン名」と記載のある部分は取得しているドメイン名に変更てください。

ワードプレスの場合はすでにある.htaccessをダウンロードして一番に書いておきましょう。絶対に元からある記載を消さないようにしましょう。

www有りのURLの統一する

# wwww有りに統一
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ドメイン名
RewriteRule ^(.*)$ http://www.ドメイン名/$1 [R=301,L]

# index.html無しに統一
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.ドメイン名/$1 [R=301,L]

# httpsに統一
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

基本的な作りは一緒ですが、3、4、9行目が微妙に違います。
こちらもドメイン名を書き換えて使ってください。

使いやすいように3つのブロックに分けて書いてありますので、既に設定のあるものや、サーバーのコンパネ等から統一できたりする場合はその部分を削除して利用してください。

以上、が.htaccessを利用したURLの統一でした。
サーバーによって細かい仕様が違う場合やパーミッションの値等がありますので、参考くらいに考えてサーバーの仕様にしたがって、必ずバックアップをとってから変更をおこなうようにしましょう!

サーバー