.htaccess生成(リダイレクト・HTTPS強制・www統一)
Apache(共用レンタルサーバーなど)で使う .htaccess を、HTTPS強制・www有無の統一・末尾スラッシュ・個別URLの301/302リダイレクト・エラーページ指定から選んで生成します。リダイレクトのループや重複を検出して警告し、反映後に確認するコマンドも案内します。リダイレクトの意味は HTTPステータスコード一覧 も参考にしてください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
反映前にお読みください
.htaccess の書き間違いは、サイト全体が500エラーになる原因になります。反映する前に、現在の .htaccess を必ずバックアップしてください。反映後はすぐにサイトを開いて確認し、エラーになったら元のファイルに戻します。
HTTPS
プロキシがHTTPSを終端している場合は、チェックしないと無限リダイレクト(ループ)になることがあります。
www の有無
パスの正規化
個別URLのリダイレクト
元のパスは / から始め、転送先は / から始まるパスか https:// で始まるURLにします。ステータスは 301(恒久)・302(一時)・307・308 から選べ、省略すると301です。# で始まる行は無視します。
その他
エラーページ
確認事項
ブラウザの仕様で、保存されるファイル名は先頭のドットが付かない htaccess.txt になります。サーバーに置く前に .htaccess に名前を変更してください。
反映後の確認手順
- 反映前に、サーバー上の既存の .htaccess を別名でバックアップする(FTPやファイルマネージャーでコピーするだけで十分です)。
- 生成した内容を、サイトのルートの .htaccess に追記または置き換える。すでにWordPressなどの記述がある場合は、# BEGIN WordPress より前に追記する。
- ブラウザでサイトのトップページを開き、500エラー(Internal Server Error)が出ていないか確認する。出たら、すぐに手順1のバックアップに戻す。
- 次のコマンドで、転送先(Location)とステータス(301など)が意図どおりか、転送が何回も続いていないかを確認する。
curl -sIL http://example.com/ | grep -iE "^(HTTP|Location)"使い方
- 「HTTPS強制」「www の統一」「末尾スラッシュ」など、行いたい設定を選びます。
- www を統一する場合は「ドメイン」欄に、example.com のようにwwwなしのドメインを入力します。
- 個別のURLを転送したいときは、「個別URLのリダイレクト」欄に1行ずつ「元のパス 転送先」を入力します。
- 確認事項を見て、「コピー」または「ダウンロード」で出力し、サイトのルートの .htaccess に反映します(ダウンロードしたファイルは htaccess.txt から .htaccess に名前を変更します)。
注意事項
- .htaccess は Apache(およびその互換サーバー)専用です。nginx や、Cloudflare Pages・Netlify・Vercel などの静的ホスティングでは使えません。
- サーバー設定で AllowOverride が許可されていないと、.htaccess は無視されるか、Options など一部の記述が500エラーになります。共用レンタルサーバーでは、管理画面の .htaccess 編集機能が使える場合もあります。
- 生成するルールは mod_rewrite・mod_alias を使い、モジュールが無効な環境でも500エラーにならないよう <IfModule> で囲んでいます。ただし、その場合はリダイレクトが動かないだけで気づきにくいため、反映後に必ず動作を確認してください。
- サイトのルート(ドキュメントルート)に置く前提のルールです。サブディレクトリに置く場合は、パスの指定を調整する必要があります。
- WordPressなどのCMSが同じ .htaccess を書き換えることがあります。CMSが管理する区間(# BEGIN と # END で囲まれた部分)の外側に追記してください。
- 301は恒久的な移転として検索エンジンやブラウザにキャッシュされ、あとから戻すのが難しくなります。動作確認が済むまでは302で試すことをおすすめします。
- 個別URLのリダイレクトは、HTTPS強制やwww統一より先にApacheが処理します。http:// や www 付きの元URLからは、2回に分けて転送されることがあります。1回で済ませたい場合は、転送先を https:// から始まる正規のURL(絶対URL)にしてください。
- 正規表現を直接書く上級者向けの指定には対応していません。複雑な条件は、生成結果を手で編集してください。
用語解説
.htaccess
Apacheでディレクトリ単位の設定を書けるファイル。サーバー全体の設定を変えずに、リダイレクトやアクセス制限などを個別に設定できる。
301 / 302リダイレクト
301は恒久的な移転、302は一時的な移転を表すステータス。検索エンジンは301を新しいURLへの評価の引き継ぎとして扱う。307・308は、リクエストの方式(POSTなど)を保ったまま転送するもの。
mod_rewrite / mod_alias
Apacheのモジュール。mod_rewriteは条件付きの書き換え(HTTPS強制やwww統一)、mod_aliasは単純なURLの転送(Redirect)に使う。
AllowOverride
Apacheの設定項目。.htaccessでどの種類の設定を上書きしてよいかを決める。許可されていないと、.htaccessの記述が無視されるか500エラーになる。
よくある質問
.htaccess はどこに置けばよいですか?
公開フォルダ(ドキュメントルート。public_html など)の直下に、ファイル名 .htaccess として置きます。この設定はサイト全体に効くルートの .htaccess を前提にしています。サブディレクトリに置くと、そのディレクトリ配下にだけ効き、パスの指定も変わります。
HTTPS強制を入れたら「リダイレクトが繰り返し行われました」と出ます。
CloudflareなどのCDNやリバースプロキシがHTTPSを終端している場合、サーバーにはHTTPで届くため、HTTPS判定が常に「HTTP」になり、ループします。「CDN・リバースプロキシ配下で使う」をチェックすると X-Forwarded-Proto ヘッダーも見て判定するので解消します。CDN側にも「常にHTTPSを使用」の設定があれば、そちらと重ねない方法もあります。
301と302はどちらを使えばよいですか?
URLを恒久的に変えるなら301、期間限定のキャンペーンなど一時的な転送なら302です。301はブラウザや検索エンジンにキャッシュされ、あとから戻しにくいので、動作確認が済むまでは302で試し、確定してから301に変える方法が安全です。
完全一致と前方一致の違いは何ですか?
完全一致は /old というURLだけを転送します。前方一致は /old/page のような配下のURLも、/new/page のように同じ構成のまま転送します。ディレクトリごと引っ越すときは前方一致、1ページだけの転送は完全一致を使ってください。前方一致では転送先が元のパスの配下にあるとループになるため、エラーとして検出します。
反映したら500エラーになりました。どうすればよいですか?
すぐに、反映前にバックアップした .htaccess に戻してください。多くはサーバーが AllowOverride で一部の記述(Options など)を許可していないことが原因です。その場合は「ディレクトリの一覧表示を無効にする」のチェックを外して試すか、サーバー管理画面の設定で代替できないか確認してください。
このページをシェア
