httpからhttpsに301リダイレクト設定しよう!www有り・無しもリダイレクトで統一しよう!

自分のサイトを常時SSL化した際やwww有りで運営していた時とwww無しで運営していた時がある場合などは301リダイレクト設定をするべきです。

ここではリダイレクト設定の方法について端的に述べていきますね!

ぜひ参考にしてみて下さい!

カッパ君

www有りとか無しとか意味分からん!けどリダイレクトしたい!

カツオ

分かるように説明するよ!

301リダイレクト設定を行う方法

301リダイレクト設定を行う方法は簡単で、次で掲載するソースコードをhtaccessファイルにコピペで記述すればOKです。

ソースコードはサイトのURL(www有りか無しか)によって2種類ありますので選んで対応して下さい。

カツオ

ちなみにhttpsはもはや必須だと思っているので、httpsじゃない場合は考えてませんので悪しからず。

httpからhttpsへ・www有りへの301リダイレクト

ここではwww有り・https(常時SSL化済み)への301リダイレクト設定のソースコードを記載しておきます。

運営しているサイトが

  • https
  • www有り

の場合は下記のコードをhtaccessファイルにコピペしましょう。

https・www有り
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

このコードをコピペする事で、万が一SSL化されてないhttpのURLやwww無しのURLにアクセスがあっても、現在運営してる「https」「www有り」のサイトまで転送出来ます。

httpからhttpsへ・www無しへの301リダイレクト

ここではwww無し・https(常時SSL化済み)への301リダイレクト設定のソースコードを記載しておきます。

運営しているサイトが

  • https
  • www無し

の場合は下記のコードをhtaccessファイルにコピペしましょう。

https・www無し
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

このコードをコピペする事で、万が一SSL化されてないhttpのURLやwww有りのURLにアクセスがあっても、現在運営してる「https」「www無し」のサイトまで転送出来ます。

【補足】サブディレクトリや個別ページからトップページへの301リダイレクト

取得した中古ドメインが過去にサブディレクトリを作り運用しており、サブディレクトリに被リンクが集まっている為、それを無駄にしない為にトップページへ301リダイレクトしたいという場合もあるでしょう。

またサブディレクトリでは無く、個別ページへのリンクをトップページへリダイレクトしたい時もあるはず。

補足としてここではサブディレクトリや個別ページからトップページへの301リダイレクトするソースコードについても記載しておきます。

カツオ

ちなみにこれはあまり数多くやると、検索エンジンからペナルティを受ける可能性があるので、ページランクが高いものを厳選して自己責任で行うようにしましょう。

 

※サブディレクトリ(個別ページ)https://newdomain.com/sample/からトップページhttps://newdomain.comへ301リダイレクトしたい場合。

サブディレクトリ・個別ページからトップページへ
RewriteEngine On
RewriteRule ^sample$ https://newdomain.com [R=301,L]

上記コードをhtaccessファイルに記述する事でサブディレクトリ・個別ページからトップページへ301リダイレクト出来ます。

htaccessファイルのどこに記述するかについて。

前述したコードをhtaccessファイルのどの部分にコピペするかについて説明していきます。

結論としては「# BEGIN WordPress」の前にコピペしましょう。

 

カツオ

流石にこれだけだと意味不明だと思うので掘り下げて説明しますね。

htaccessファイルのどの部分にどんなものを記述するかは原則があります。

.htaccessファイルに複数の記述を書くときの適切な順番を尋ねる質問がWebmasterWorldに投稿された。原則的に、次のように考えるといいだろうとのことだ。

1. 最初は、アクセス制御。
2. 次は、外部向けリダイレクト。
3. 最後は、内部でのリライト。

引用元:.htaccessの記述の正しい順番

という事で、今回の記述は2の外部向けリダイレクトとなります。

 

次に、初期状態のWordPressのhtaccessファイルは下記のようになっています。

【参考】WordPressの初期状態のhtaccessファイル
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_AllCacheMode

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
注意

SetEnvIf Request_URI “.*” Ngx_Cache_NoCacheMode=off

SetEnvIf Request_URI “.*” Ngx_Cache_AllCacheMode

↑についてはエックスサーバーでXアクセラレータを使用している時に記述されるものです。

Xアクセラレータを使用していない場合は有りません。

 

よってXアクセラレータを使用している場合は「SetEnvIf Request_URI “.*” Ngx_Cache_AllCacheMode」の下、「# BEGIN WordPress」の上に貼り付けましょう。

Xアクセラレータを使用していない場合は「# BEGIN WordPress」の上に貼り付けましょう。

htaccessファイルへ記述する方法。

htaccessファイルへ記述する為にはFTPソフトを使うか、サーバーのファイルマネージャー機能を使うかすればhtaccessファイルを編集できます。

 

筆者はエックスサーバーを使用していますが、エックスサーバーの場合はサーバーパネル画面からhtaccessファイルの編集が可能です。

①サーバーパネル画面で「.htaccess編集」をクリックする。(設定対象のドメインも選択しておく)

.htaccess編集

 

②「.htaccess編集」の画面で「.htaccess編集」のタブを選択すると編集できる。

.htaccess編集

本記事で説明しているようなリダイレクト設定を行う理由。

httpからhttpsへの301リダイレクト設定やwwwの有無を統一する301リダイレクト設定を行う理由ですが、ドメインパワーを分散させない為です。

 

常時SSL化してhttpsでサイトを運営しているのに、何故かSSL化していないhttpへのアクセスがある場合があります。

また、www無しでWordPressブログを運営しているのに、何故かwww有りのURLにアクセスがあったり、その逆も起こりえます。

これは特に中古ドメインを使用してる場合などに発生しやすいです。

 

このような状況ではサイトのドメインパワーが分散してしまうとされており、それを避ける為にこの記事で紹介してきたリダイレクト設定を行うべきなのです。

 

今回の内容は以上です。

カツオ

最後まで読んで頂きありがとうございました。

コメントはお気軽にどうぞ(承認制なので誹謗中傷は削除されます)

4 + nineteen =