コピペで使えるwwwの有無、https統一する.htaccessの記述方法

コピペで使えるwwwの有無、https統一する.htaccessの記述方法

■.htaccessファイルの転送の記述
.htaccessファイルを使用するには、Apache HTTP Server(Webサーバー)でmod_rewriteモジュールが有効になっている必要がありますが、ほとんどのレンタルサーバーでデフォルトで使用できるようになっています。

■wwwの有無、httpsに統一出来るコピペで使える記述方法
ドメイン名を記述していないので、どのドメインで使う場合もコピペでOKです。

—————ここから————————-


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

—————ここまで————————-

■記述内容の詳しい説明

URL書換と転送の記述は以下のようになっています。

RewriteCond %変数名 条件 [フラグ]
ewriteRule URL書換&転送の記述
RewriteCondに記述した条件に合致したとき、RewriteRuleに記述したURL書換と転送が実行されます。
RewriteCondを複数行記述すればAND条件となり、複数行にフラグ[OR]をつければOR条件となります。

1行目、7行目は、mod_rewriteモジュールが有効かどうか判定する条件式となっており、有効であることが間違いないのであればなくてもOKです。
2行目が、Rewrite機能を使用するのでオンに。
3~4行目が、wwwなしに統一、5~6行目が、httpsに統一する記述です。

■wwwあり・なしの部分
個別に簡単に説明すると、RewriteCondの「(.*)」とRewriteRuleの「%1」がポイントとなっています。
RewriteCondでカッコを使って一致した値は、RewriteRuleで変数%X(一致した順に連番)を利用して参照することができるため、この転送の記述で「https://www.mydomain.com/」は「https://mydomain.com/」のようにwwwなしに転送されます。

%{HTTP_HOST} … サーバーのホスト名が
^www\.(.*) … www.から始まる場合
[NC] … 大文字・小文字区別せず(これは無しでもよいかと)
https://%1%{REQUEST_URI} … httpsのURLへ転送
[R=301] … レスポンスコード「301」(恒久的に転送)
[L] … 直後に続くRewriteRuleを実行しない
なお、wwwありに統一する場合は、以下のように記述します。

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
http・httpsの部分
こちらは特にポイントとなるようなところはありません。

%{HTTPS} off … httpsでのアクセスではない場合
https://%{HTTP_HOST}%{REQUEST_URI} … httpsのURLへ転送
なお、https化が必須になってきている流れもありますので、httpに統一する場合は省略します。