.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なしに統一する場合

www.example.com へのアクセスを example.com に恒久的にリダイレクトします。

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

wwwありに統一する場合

example.com へのアクセスを www.example.com に恒久的にリダイレクトします。

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統一をまとめて設定

実際のサイトでは複数の条件を組み合わせて設定します。ルールの順序が重要で、HTTPS転送を先に記述するのが基本パターンです。

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]

よくあるミスと注意点

設定ミスがあると500エラーの原因になるため、編集前に必ずバックアップを取り、確認ポイントを押さえておきましょう。

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