--- title: ".htaccessでリダイレクトを設定する方法|301・302の書き方" description: ".htaccessを使ったリダイレクト設定を解説します。HTTPSへの転送・wwwあり/なし統一・旧URLから新URLへの301リダイレクトの書き方をまとめました。" date: 2026-05-11 tags: [htaccess, リダイレクト, SEO, Apache] related_tools: [htaccess, http-status, ssl-check] draft: false --- `.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.com` と `example.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] ``` ## よくあるミスと注意点 - `RewriteEngine On` の記載漏れでルールが動かない - ルールの順番が重要(上から順に処理される) - 書き方ミスで500エラーになることがある(バックアップを必ず取ること) - Nginxサーバーでは `.htaccess` は使えない(`nginx.conf` で設定する) [.htaccess生成ツール](/htaccess/)を使うと、HTTPS転送・www統一・セキュリティヘッダーを選択式で設定してダウンロードできます。設定後は[HTTPステータスチェッカー](/http-status/)でリダイレクトが正しく動作しているか確認しましょう。