Apache .htaccess の mod_rewrite リダイレクト設定(HTTP→HTTPS / www統一 / 301)

htaccess Apache リダイレクト SEO サーバー管理
結論:30秒で .htaccess リダイレクトを作成する
  • HTTP → HTTPS: RewriteCond %{HTTPS} off -> RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
  • SEO 引き継ぎ: 恒久移行は必ず R=301 フラグ
  • 生成ツール: 下のコンポーネントで構文エラーなしで即出力

1. オンライン .htaccess リダイレクト記述生成ツール

転送元 URL と転送先 URL を入力するだけで、構文エラーのない .htaccess コードをブラウザ内で自動生成します。

🚀 この場で.htaccessを生成する

  

2. mod_rewrite の基本構文とフラグの意味

# ① リライトエンジンの有効化(必須宣言)
RewriteEngine On

# ② 転送条件(RewriteCond: 条件に合致した場合のみ次の Rule を実行)
RewriteCond %{HTTPS} off

# ③ 転送ルール(RewriteRule: 比較パターン 転送先URL [フラグ])
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

主要なフラグ(Flags)の意味

  • R=301: HTTP 301 Moved Permanently(永久転送)レスポンスを返してブラウザと検索エンジンに通知。
  • L (Last): このルールにマッチした場合、以降の RewriteRule の評価を即座に終了します。
  • NC (No Case): 大文字・小文字を区別せずにマッチングを行います。
  • QSA (Query String Append): 転送元 URL のクエリパラメータ(?ref=123 等)を維持して転送先に付加します。

3. 実務でよく使う .htaccess 設定パターン集

① HTTP から HTTPS へ全アクセスを自動昇格(SSL化)

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

② URLの「www なし」へ統一(正規化)

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

4. 注意点(ハマりどころ)

  1. 転送ルールの順序による無限ループ
    • 転送ルールの順番を誤ると、A → B → A のように無限ループが発生してブラウザで ERR_TOO_MANY_REDIRECTS エラーになります。広域なリダイレクト(全体転送)は末尾に配置してください。
  2. ブラウザの強力な 301 キャッシュ
    • ブラウザは 301 リダイレクトを強固にキャッシュするため、テスト中にミスしたリダイレクトが残り続けます。検証時は開発者ツールの「Disable cache」を入れるか、302 でテスト後に 301 へ変更するのが定石です。