.htaccess はApacheサーバーで使えるディレクトリ単位の設定ファイルです。リダイレクト・アクセス制限・キャッシュ設定などをコントロールできます。Webサイトの引っ越しやURLの変更時には欠かせない設定方法です。

.htaccessの基本構造

.htaccess はサイトのルートディレクトリ(public_html/ など)に設置します。mod_rewrite を使ったリダイレクトは以下の構造で書きます。

RewriteEngine On
RewriteCond %{条件変数} 条件
RewriteRule 元のパターン 転送先 [フラグ]
## HTTPSへのリダイレクト

HTTPでアクセスしたユーザーをHTTPSに強制転送します。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
R=301 が301リダイレクト(恒久的)を意味し、L はこのルールを最後として処理を止めます。

wwwあり・なしの統一

SEOの観点から、www.example.comexample.com はどちらか一方に統一する必要があります。

wwwなしに統一する場合

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
### wwwありに統一する場合

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
## 特定URLのリダイレクト

ページを削除・移転した場合の301リダイレクトです。

RewriteEngine On
RewriteRule ^old-page/?$ /new-page/ [R=301,L]
複数ページを一括でリダイレクトする場合も同じルールを並べて書きます。

HTTPSとwww統一をまとめて設定

実際のサイトでは複数の条件を組み合わせて設定します。

RewriteEngine On

# HTTPSへ転送
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# wwwなしに統一
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
## よくあるミスと注意点

.htaccess生成ツールを使うと、HTTPS転送・www統一・セキュリティヘッダーを選択式で設定してダウンロードできます。設定後はHTTPステータスチェッカーでリダイレクトが正しく動作しているか確認しましょう。