.htaccessでhttpにアクセスされたときに自動でhttpsに「www」のあり・なし統一して301リダイレクトする

.htaccessでhttpにアクセスされたときに自動でhttpsに「www」のあり・なし統一して301リダイレクトする

SSLに対応させる為に、「.htaccess」を使って、httpのURLにアクセスされたときに、自動でhttpsのURLに301リダイレクトする記述と、URLに「www」のあり・なし統一する記述をまとめました。
※作業前に.htaccessのバックアップをしておきましょう!

.htaccess関連記事

同じページでもhttpとhttpsは別ページと認識されてしまう

Googleの検索エンジンは、サイト上の同じページを参照していたとしても、httpとhttpsはURLが異なるため、これらのページを別ページと認識してしまいます。
httpとhttpsのどちらでもアクセスできる状態のままだと、評価が分散してしまう可能性があります。

さらに、httpでもアクセスできてしまう状態は、SSL対応ができていないため送信情報を暗号化できないどころか、WordPressで作ったサイトならきっとcssなどもパスの関係で読み込みできず、サイトが激しく崩れてしまっていると思います。

これらを回避するためにも、SSL証明書を導入した場合は、httpをhttpsに正しくリダイレクトする必要があります。

「www」のあり・なしでも別ページと認識されてしまう

URLの「www」あり・なしでも上記と同様で、別ページと認識されてしまう現象が起きます。
まだ対応していない場合は、SSLの導入と一緒に対策しましょう。

リダイレクトの種類

リダイレクトには「301リダイレクト」と「302リダイレクト」の2種類があります。どちらもリダイレクトする処理ですが、使われる場面が違うため、場面に応じて使い分けが必要です。

301リダイレクト

301リダイレクトは、URLを恒久的に変更する場面で使うリダイレクトです。
例えば、サイトの移転やドメインの変更、SSL化するときなどの「サイト自体は変わらず、URLのみ変更になる」場合に使用します。

そのままサイト移転などでURLを変更してしまうと、旧URLで獲得してきたSEOの評価はそのまま残ってしまいます。例えばSSL対応するだけでも、新URLでは評価を一から獲得していくことになります。

301リダイレクトを使うことで、旧URLの評価を引き継ぐことができます。

302リダイレクト

302リダイレクトは、URLを一時的に変更する場面で使うリダイレクトです。
例えば、サイトのメンテナンスや一定期間ページを閉じているときなど「URLを一時的に変更する」場合に使用します。

302リダイレクトを使うことで、SEO評価は引き継がれず旧URL側に残ったままになります。

httpからhttpsにリダイレクト

.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

サイトの構成が変わらずに、URLだけ変わるパターンならこれで301リダイレクトができます。

wwwなしで、httpからhttpsにリダイレクト

.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^(mugenweb\-note\.com\/web\/)(:80)?
RewriteRule ^(.*) https://mugenweb-note.com/web/$1 [R=301,L]

上記.htaccessで以下のパターンを「https://mugenweb-note.com/web/」に301リダイレクトできます。
・http://mugenweb-note.com/web/
・http://www.mugenweb-note.com/web/
・https://www.mugenweb-note.com/web/

URLのエスケープについては、下記で解説しています。

正規表現でエスケープが必要な文字まとめ
正規表現では、特殊文字をパターンとして使いたい場合に、バックスラッシュ(\)を使ってエスケープが必要です。 よく忘れるので正規表現でエスケープが必要な文字をまとめました。 jQuery関連記事 正規表現...

wwwありで、httpからhttpsにリダイレクト

.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^(mugenweb\-note\.com\/web\/)(:80)?
RewriteRule ^(.*) https://www.mugenweb-note.com/web/$1 [R=301,L]

上記.htaccessで以下のパターンを「https://www.mugenweb-note.com/web/」に301リダイレクトできます。
・http://mugenweb-note.com/web/
・http://www.mugenweb-note.com/web/
・https://mugenweb-note.com/web/

URLのエスケープについては、下記で解説しています。

正規表現でエスケープが必要な文字まとめ
正規表現では、特殊文字をパターンとして使いたい場合に、バックスラッシュ(\)を使ってエスケープが必要です。 よく忘れるので正規表現でエスケープが必要な文字をまとめました。 jQuery関連記事 正規表現...

リダイレクトの動作確認方法

リダイレクトの動作確認方法は、Chromeの「デベロッパーツール」を使用すると簡単にできます。

Windowsは、ショートカットキーの「Ctrl+Shift+I」や「F12」でもデベロッパーツールの起動します。

1.「Network」のタブを選択します。
2.「Preserve log」にチェックを入れます。
3.動作確認を行いたい旧URLにアクセスします。
4.「Name」の右側にある「Status」で301や302の状態を確認します。

コメント

タイトルとURLをコピーしました