IT関連
PR

エックスサーバー(Xserver)でhttpやwwwから始まるアクセスを301リダイレクト

saratogax
記事内に商品プロモーションを含む場合があります

mixhost から Xserver へレンタルサーバを移行して 1 か月ほど。

初期設定では以下のアクセスが制御されずに、そのままサイトが閲覧できてしまいます。

・www ありのドメイン指定
・http プロトコルによるアクセス

例えば、以下のようなリクエストですね。

https://www.example.org
https://www.example.org/hoge
http://example.org
http://example.org/hoge

一般的なリダイレクト設定は他のサイトでも紹介されていますが、細かいところに手が届いていないものが多く、結果的に自分で設定してみました。

今回は .htaccess によるリダイレクトの記述を紹介します。

ここでは仮に、ドメインを example.org とします

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

こちらの設定は「%{HTTP_HOST}」の内容が www から始まっているかを確認すること。

http や https のプロトコルは気にしません。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://example.org%{REQUEST_URI} [R=301,L]
</IfModule>

環境によっては、「\」をバックスラッシュに置き換えてください

httpのプロトコル要求をhttpsにリダイレクト

昨今では http はセキュリティ的にタブーということで推奨されていないので、自分では意図していなくても、そのまま http でサイトが閲覧できてしまうのは恥ずかしいですよね。

リダイレクト先の URL のドメインは「%{HTTP_HOST}」で置き換えれなくもないですが、次に紹介する条件指定の際など汎用的に使えなくなるのでベタに「example.org」とします。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{HTTP_HOST} ^example\.org(.*)$
RewriteRule ^(.*)$ https://example.org%{REQUEST_URI} [R=301,L]
</IfModule>

環境によっては、「\」をバックスラッシュに置き換えてください

2つの条件を同時に設定

2 つの制御を 1 つの .htaccess にまとめます。

ここで注意したいのが、www 判定と http 判定を単純に [OR] でつなぐと、https://www.example.org(すでに https だが www あり)が漏れてしまう点です。

%{HTTPS} off の条件が www 側にも AND で効いてしまい、「https かつ www」のケースが素通りするためです。

そこで、www を外すルールと http を https にするルールを、2 つの RewriteRule に分けて書きます。

<IfModule mod_rewrite.c>
RewriteEngine On

# ① www あり → www なし(プロトコルは問わない)
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://example.org%{REQUEST_URI} [R=301,L]

# ② http → https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://example.org%{REQUEST_URI} [R=301,L]
</IfModule>

これで、冒頭の 4 パターン(http / https × www あり / なし)を、すべて https://example.org の正規 URL にそろえられます。

環境によっては、「\」をバックスラッシュに置き換えてください

ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました