技術系TIPS
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つの条件を同時に設定

個別にリライト設定を書くのもアレなので、OR で条件を繋げてしまいましょう。

これで、冒頭の条件を満たす制御ができそうです。

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

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

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