.htaccessの書き方:リダイレクト・SSL・404を安全に確認する
.htaccess は、レンタルサーバーでリダイレクト、HTTPS統一、404ページ、アクセス制限などを調整するための設定ファイルです。便利ですが、1行のミスでサイト全体が 500 Internal Server Error になることがあります。
このページでは、ロリポップなどのApache系サーバーで .htaccess を編集する前に、置き場所、バックアップ、変更内容、AIに貼る情報、公開後の確認、壊れた時の戻し方を順番に整理します。
確認日と作成方針
確認日: 2026年6月12日
このページは、Copicodeの実サイト運用、ローカル確認、公開URL確認、Apache HTTP Serverとロリポップの公式情報をもとに、初心者が安全に切り分けられる順番へ整理しています。構成整理やチェックリスト作成にはAIを補助的に使うことがありますが、公開前に内容、危険操作、秘密情報、内部リンク、対象範囲を人の目で確認しています。
.htaccessを触る前の確認順
このページで整理できること
.htaccessをどのフォルダに置くか- 編集前にどのファイルを保存しておくか
- HTTPS転送、www統一、301、404、アクセス制限のどれを使うか
- AIやCodexが出した
.htaccessをそのまま上げてよいか - 500エラー、リダイレクトループ、画像/CSS崩れが出た時に何から戻すか
最初に目的を1つに絞る
.htaccess は複数の設定を書けますが、最初から全部を同時に直そうとすると、どの1行で壊れたか分からなくなります。まず今回の目的を1つに絞ります。
| やりたいこと | 最初に確認すること | いきなりやらないこと |
|---|---|---|
| httpからhttpsへ移したい | サーバー側のSSL設定が有効か | SSL未設定のまま強制転送を書く |
| 古いURLを新しいURLへ飛ばしたい | 古いURLと新しいURLがどちらも正しいか | 大量の301を一度に追加する |
| 404ページを出したい | 指定先の404ページが実在するか | 存在しないファイルをErrorDocumentに指定する |
| 特定フォルダを見せたくない | 対象フォルダだけに置けるか | サイト直下に Require all denied を置く |
| AIが出した設定を試したい | どの症状を直す設定か説明できるか | 全文を置き換える |
置き場所を確認する
.htaccess は、置いたフォルダとその下のフォルダへ影響します。サイト全体に効かせるなら、トップページの index.php や assets/ が見える公開フォルダ直下を確認します。
公開フォルダの例:
index.php
assets/
templates/
.htaccess
サブフォルダだけに効かせたい設定は、そのサブフォルダ内へ置きます。意図しない上位フォルダへ置くと、サイト全体に影響が出ます。
編集前に必ずバックアップを取る
FTP/SFTPでサーバー上の今動いている .htaccess をダウンロードし、日付付きの名前で保存します。手元の古いファイルではなく、本番で今使われているファイルを保存するのが重要です。
.htaccess.backup-20260612
アップロード後に500エラーになったら、まず直前に上げた .htaccess を別名へ退避し、バックアップを .htaccess に戻します。PHPやCSSを先に疑うより、直前に触った設定から戻します。
よく使う設定例
以下は考え方を整理するための基本例です。サーバー仕様や既存の .htaccess によっては、そのまま貼らず調整が必要です。
httpsへ統一する
SSL設定がサーバー側で有効になっている前提で、httpアクセスをhttpsへ転送する基本形です。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ロリポップ側で独自SSLが未設定のまま書くと、警告や表示不能につながることがあります。先にSSL設定と実際のhttps表示を確認します。
wwwあり・なしを統一する
URLの重複を減らすため、www ありかなしのどちらかに統一します。例ではなしに統一しています。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
example.com は自分のドメインに置き換えます。https転送と組み合わせる時は、転送先が同じ正規URLへ向かうようにします。
古いURLを新しいURLへ移す
記事を統合したり、ファイル名を変えたりした時は、古いURLから新しいURLへ301リダイレクトします。
Redirect 301 /old-page.php /new-page.php
古いURLの左側はスラッシュから始めます。複雑な条件がない単純な移転なら、まず Redirect 301 で整理します。
自作の404ページを表示する
存在しないURLへアクセスされた時、サーバー標準の画面ではなく自分の404ページを表示できます。
ErrorDocument 404 /404.php
/404.php が実際に存在している必要があります。404ページ自体が404になっていないか、公開後に直接開いて確認します。
テストフォルダを見せない
作業中のファイルやバックアップを公開フォルダへ置いた場合、外から見えてしまうことがあります。公開したくないフォルダだけにアクセス制限を置きます。
Require all denied
この1行を書いた .htaccess を、見せたくないフォルダの中に置きます。サイト全体のルートに置くと全ページが見えなくなるため、置き場所を必ず確認します。
AIやCodexが出した.htaccessを貼る前に見ること
AIの回答は便利ですが、既存の .htaccess、サーバー仕様、SSL状態、公開フォルダを知らないまま生成されることがあります。全文置き換えではなく、追加する目的と行だけを確認します。
| 確認すること | 見る理由 | 危ないサイン |
|---|---|---|
既存の RewriteEngine On | 同じブロックを何度も増やさないため | 既存設定を丸ごと消している |
| 転送先URL | 別ドメインやhttpへ飛ばないか見るため | 知らないURL、http、サブドメインへ飛ぶ |
| 対象フォルダ | 設定がサイト全体に効くか一部だけか分けるため | ルートに置く前提の危険な拒否設定 |
| 既存のWordPressやCMS設定 | 自動生成ブロックを壊さないため | CMSブロックを削除している |
| 秘密情報 | ログイン情報やサーバー内部情報を守るため | 認証情報、内部パス、IP制限全文をそのまま貼る |
公開後に確認するURL
- トップページが
200で表示される http://からhttps://へ移動する- 古い記事URLが新しい記事URLへ
301で移動する - 存在しないURLで404ページが表示される
- CSS、画像、JavaScriptが
404や403になっていない - スマホでもリダイレクトループや表示崩れが起きていない
よくある失敗と戻し方
| 症状 | 原因の例 | 最初に戻す場所 |
|---|---|---|
| 500エラーになる | 記述ミス、許可されていないディレクティブ | 直前に上げた .htaccess を退避し、バックアップへ戻す |
| リダイレクトが止まらない | http/https、wwwありなし、古いURLの転送が循環している | 追加した転送ブロックを一度外す |
| CSSや画像が読めない | 転送でパスが変わった、403/404になった | 画像やCSSの直接URLを開いて状態コードを見る |
| httpsへ飛ばない | SSL未設定、条件式の順番、キャッシュ | ロリポップのSSL設定と公開URLを確認する |
| FTP/SFTPで.htaccessが見えない | ドットで始まる隠しファイルが非表示 | WinSCPやFileZillaの隠しファイル表示を確認する |
AIやサポートへ相談する時のメモ
自分で原因を説明しにくい時は、次の形で整理します。.htaccess 全文、FTP情報、管理画面ログイン情報、秘密のパスワードは貼らないでください。
ロリポップ上の自作サイトで .htaccess を編集しようとしています。
目的:
例: httpからhttpsへ統一 / 古いURLを新URLへ301 / 404ページを指定 / 特定フォルダを見せない
今の症状:
例: 500エラー / リダイレクトループ / CSSや画像が読めない / 何も変わらない
確認済み:
- 編集前の .htaccess バックアップ:
- .htaccess の置き場所:
- SSL設定の有効化:
- 追加したい行:
- 公開後に確認したURL:
伏せた情報:
FTP情報、ログイン情報、サーバー内部パス、個人情報、認証情報は貼っていません。
見てほしいこと:
1. この変更は目的に合っていますか。
2. 500エラーやリダイレクトループになりそうな箇所はありますか。
3. 既存の設定を消さずに追加するなら、どこへ入れるべきですか。
公式情報で確認すること
.htaccess はサーバー仕様の影響を受けます。AIの回答だけで判断せず、使っているサーバーとApache側の説明も確認します。
| 確認先 | 見ること | リンク |
|---|---|---|
| ロリポップ公式 | .htaccess の利用方法と関連マニュアル |
ロリポップ公式 .htaccess利用方法 |
| Apache公式 | .htaccess の適用範囲、AllowOverride、トラブル時の考え方 |
Apache .htaccess files |
| Apache公式 | Redirect と301/302/410などの使い分け |
Apache Redirect directive |
| Apache公式 | RewriteRule や RewriteCond を使う時の基本 |
Apache mod_rewrite |