Web技術を整える
中級.htaccessリダイレクトを整える。
= 旧パス→新パスの 301/302 を、9つの型から選んで生成し、動作確認と誤り検出までする
.htaccess が初めての方は、先に そもそも.htaccess とは・どんな場面で使うか をどうぞ。
—
各行の説明
—
このシミュレーターの限界(開く)
そもそも.htaccess とは
Apache(Web サーバー)の設定を、フォルダごとに書き足せる小さな設定ファイル。
.htaccess は、Apache という Web サーバーの動作を、置いたフォルダとその下にだけ変えられる設定ファイルです。ハイパーテキストアクセス(hypertext access)の略とされています。先頭のドットは、Linux で「隠しファイル」を表す印です。部屋のドアに貼る「この部屋のルール」の紙のようなものです。
本体の設定ファイルに触れないレンタルサーバーでも使えるため、サイト運営でよく登場します。書いたらすぐ反映され、再起動は要りません。一方で、書き間違えるとサイトが 500 エラーになることがあります。Nginx など Apache 以外のサーバーでは別の方法で設定します。
どこで・どんな場面で使うか
-
サイトの引っ越し・URL の変更
古い URL へのアクセスを新しい URL に転送し、訪問者と検索結果の評価を引き継ぎます。
-
https や www の有無を統一するとき
アドレスの揺れを1つに揃え、同じページが複数の URL で見える状態を防ぎます。
-
見せたくないものを隠すとき
フォルダの中身一覧の表示を止めたり、特定のファイルへのアクセスを断ったりします。
-
表示速度を上げるとき
キャッシュの期間や圧縮の設定を書いて、ページの読み込みを軽くします。
-
障害対応で 500 エラーが出たとき
直前に書き足した行が原因のことが多いので、元に戻して切り分けます。
なぜ覚えておくと得か
- サーバーの管理画面に触れなくても、自分で直せる。転送や制限が、業者に頼まず自分の手でできます。
- 移転で順位を落としにくい。正しい転送を設定できれば、URL 変更の影響を小さくできます。
- 事故のとき、元に戻せる。書く前にバックアップを取る習慣と合わせて、安全に試せます。
上のツールで転送の種類を選んで、生成される行が何をしているのか確かめてみてください。
「.htaccess」が効く条件(AllowOverride)
.htaccessは、Apacheのサーバ設定(httpd.conf側)でAllowOverrideが
None以外(Allや
個別に許可した項目)になっているディレクトリでだけ読み込まれます。共有レンタルサーバの多くは初期状態で許可されていますが、
VPSや自前構築のApacheではAllowOverride Noneが既定になっている場合があり、
その場合は.htaccessに何を書いても一切反映されません。まずサーバ管理者・ホスティング側の設定を確認してください。
RedirectとRewriteRuleの違い
Redirect / RedirectMatch(mod_alias)はURL-path(先頭スラッシュを含む絶対パス)を対象に、
単純な前方一致(Redirect)か正規表現(RedirectMatch)でパスを判定します。ホスト名や条件分岐(httpsかどうか等)は扱えません。
RewriteRule(mod_rewrite)は正規表現の書き換えエンジンで、RewriteCondと
組み合わせてホスト名・プロトコル・実ファイルの有無などあらゆる条件を判定できます。ただし機能が多い分、書き方を誤ったときの
影響(ループ・意図しない多重書き換え)も大きくなります。単純な1対1の付け替えだけならRedirect、条件分岐が必要ならRewriteRuleという
使い分けが基本です。
301と302の使い分けと検索エンジンへの影響
301(Moved Permanently)は「恒久的に移動した」ことを示し、検索エンジンは新しいURLの評価を引き継ぐ前提で インデックスを更新します。302(Found)は「一時的な移動」を示し、検索エンジンは元のURLをインデックスに 残したまま扱う傾向があります。恒久的なURL変更(スラッグ改名・ドメイン移転など)には301、キャンペーンやA/Bテストなど 期間限定の切り替えには302を使うのが基本です。302を使い続けたまま長期間放置すると、恒久移転のつもりでも評価が 引き継がれない場合があります。
反映確認の方法(curl -I)
.htaccessをアップロードしたら、ブラウザではなくヘッダだけを見るcurl -Iで
確認するのが確実です。例えばcurl -I https://example.com/old-pageを実行し、
レスポンスの1行目がHTTP/1.1 301 Moved Permanentlyとなっているか、
Location:ヘッダが期待する新URLになっているかを確認します。
ブラウザは301の結果をキャッシュすることがあるため、ブラウザだけで確認すると「直したつもりが反映されていない」ように
見えることがあります。curl -Iならキャッシュの影響を受けにくく、
何度でもやり直せます。
よくある事故(ループ・ケース違い・キャッシュ)
- 無限リダイレクトループ — www統一とhttps統一を両方設置したとき、片方の判定条件がもう片方の結果と矛盾すると、 ブラウザが「リダイレクトが多すぎます」というエラーを出すまで転送を繰り返します。1つずつ設置してテストURLで確認してから 次を足すのが安全です。
- 大文字小文字の違い — Linux上のApacheはパスの大文字小文字を区別するため、
/Old-Pageと/old-pageは別物として扱われます。表記ゆれも拾いたい場合はNCフラグ (②)を使います。 - キャッシュに阻まれて反映確認できない — ブラウザ・CDN・プロキシのいずれかが301の結果を長くキャッシュしていると、
.htaccessを直しても古い転送先のまま見えることがあります。上の「反映確認の方法」のとおり
curl -Iで 確認し、それでも古い場合はCDN側のキャッシュパージも検討してください。
🔒 生成も検証も動作確認も、すべてあなたのブラウザの中(純JavaScript)で完結します。入力した内容はサーバには送られません(送信ゼロ)。
このツールについて
旧パスから新パスへの301/302リダイレクトを、Redirect・RedirectMatch・RewriteRuleの9パターンから選んで生成します。生成した内容はテストURLで動作確認でき、貼った.htaccessの中身もよくある間違い(RewriteEngine On漏れ・ループなど)を機械的にチェックできます。入力はこの端末の中だけで処理します(送信ゼロ)。
.htaccess の 301/302 リダイレクトを9つの型から生成し、動作確認と誤り検出までできます。
主な機能
- 単純リダイレクト(Redirect/RedirectMatch)と mod_rewrite 版(RewriteRule・NC/QSA)
- www 統一・https 統一・末尾スラッシュ統一・ドメイン移転・404/410
- ディレクトリ一覧の禁止・ファイル拒否・キャッシュと圧縮の定型
- テスト URL に適用して結果 URL とステータスを確認
- 貼った .htaccess のよくある間違いを検出・送信ゼロ
よくある質問
Q. 301 と 302 はどちらを使えばよいですか?
A. 恒久的な URL 変更(ページ移転・スラッグの改名・ドメイン移転)には 301、期間限定の一時的な切り替えには 302 です。301 は検索エンジンが新 URL に評価を引き継ぐ前提で扱われ、302 は旧 URL の評価が残りやすい点が異なります。
Q. .htaccess を直したのに反映されているか分かりません。
A. ブラウザは 301 の結果をキャッシュすることがあるため、ブラウザだけでは古い結果に見えることがあります。curl -I で対象 URL を叩き、1行目のステータスコードと Location ヘッダを直接確認するのが確実です。
Q. Redirect と RewriteRule はどちらを使えばよいですか?
A. 単純な1対1のパスの付け替えなら Redirect(mod_alias)で十分です。ホスト名や https の判定など条件分岐が必要なら RewriteRule(mod_rewrite)と RewriteCond を組み合わせます。両方を同じパスに混在させると処理順で意図しない結果になることがあるため、どちらかに統一します。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。