本文へスキップ
にゃんこツール

.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 に名前を変更してください。

    反映後の確認手順

    1. 反映前に、サーバー上の既存の .htaccess を別名でバックアップする(FTPやファイルマネージャーでコピーするだけで十分です)。
    2. 生成した内容を、サイトのルートの .htaccess に追記または置き換える。すでにWordPressなどの記述がある場合は、# BEGIN WordPress より前に追記する。
    3. ブラウザでサイトのトップページを開き、500エラー(Internal Server Error)が出ていないか確認する。出たら、すぐに手順1のバックアップに戻す。
    4. 次のコマンドで、転送先(Location)とステータス(301など)が意図どおりか、転送が何回も続いていないかを確認する。
    curl -sIL http://example.com/ | grep -iE "^(HTTP|Location)"

    使い方

    1. 「HTTPS強制」「www の統一」「末尾スラッシュ」など、行いたい設定を選びます。
    2. www を統一する場合は「ドメイン」欄に、example.com のようにwwwなしのドメインを入力します。
    3. 個別のURLを転送したいときは、「個別URLのリダイレクト」欄に1行ずつ「元のパス 転送先」を入力します。
    4. 確認事項を見て、「コピー」または「ダウンロード」で出力し、サイトのルートの .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 など)を許可していないことが原因です。その場合は「ディレクトリの一覧表示を無効にする」のチェックを外して試すか、サーバー管理画面の設定で代替できないか確認してください。

    このページをシェア

    ↑↓ 選択 Enter 開く Esc 閉じる