.htaccess Generator

.htaccess とは?入門ガイド

ジェネレーター

.htaccess とは?

Apache ウェブサーバーのディレクトリ単位の設定ファイル

ファイル名は .htaccess(ドット始まり)で、特定のディレクトリに置くとそのディレクトリ以下すべての挙動を制御できる。

通常の Apache 設定は httpd.conf というサーバー全体の設定ファイルで行うが、レンタルサーバーでは httpd.conf を直接編集できない。

.htaccess はサーバー管理者の権限がなくても、ディレクトリ単位で設定を上書きできる仕組みとして用意されている。

配置場所と効果範囲

配置場所 効果範囲
サイトルート(/public_html/ サイト全体
/public_html/blog/ /blog/ 以下のみ

通常は WordPress がインストールされているサイトルートに 1 つ置くだけで OK。


.htaccess でできること

機能
リクエストの書き換え HTTP → HTTPS へ 301 リダイレクト、URL 正規化
アクセス制限 特定の IP やボット UA をブロック(403 を返す)
ファイル保護 wp-config.php.htaccess 自体への直接アクセスを拒否
レスポンスヘッダーの追加 HSTS・CSP・X-Frame-Options などセキュリティヘッダーの付与
キャッシュ制御 画像・CSS・JS のブラウザキャッシュ有効期限を設定
圧縮 Gzip 圧縮でレスポンスサイズを削減

使える環境・使えない環境

.htaccessApache ウェブサーバー専用の機能。国内の主要レンタルサーバーはほぼ Apache のため、そのまま使える。

主要レンタルサーバーの対応状況

サーバー 対応
エックスサーバー ✅ 使える
ConoHa WING ✅ 使える
シン・レンタルサーバー ✅ 使える
さくらインターネット ✅ 使える
ロリポップ ✅ 使える
VPS(Nginx を自前構築) ❌ 使えない
KUSANAGI(Nginx モード) ❌ 使えない

Nginx 環境の場合: 設定は nginx.confserver ブロックで行う。書き方は違うが概念は共通なので、.htaccess の知識は無駄にならない。


WordPress との関係

WordPress が自動生成するブロック

WordPress の「設定 → パーマリンク設定」を保存すると、.htaccess に以下のブロックが自動生成される。

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへの変更はすべて上書きされます。

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

カスタムルールを書く場所

# BEGIN WordPress# END WordPress の間は WordPress が自動的に上書きするため、直接編集してはいけない。カスタムルールはこのブロックの外(上)に追記する。

# ✅ ここにカスタムルールを書く(WordPress ブロックより上)

# 例: HTTPS リダイレクト

    RewriteEngine On
    RewriteCond %{HTTPS} !=on [NC]
    RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


# BEGIN WordPress
# (WordPress 自動生成ブロック — 触らない)
...
# END WordPress

Wordfence・EWWW Image Optimizer などのプラグインが生成するブロックも同様に触らない。


基本構文の 3 つの柱

.htaccess に登場するコードのほとんどは、次の 3 つのディレクティブの組み合わせで成り立っている。

IfModule      → 「このモジュールは使える?」(安全装置)
 └ RewriteCond  → 「この条件に合致する?」(if 文)
   └ RewriteRule  → 「条件を満たしたのでこう処理する」(実行)

<IfModule> — モジュールの安全装置

指定した Apache モジュールが有効な場合にのみ、中のディレクティブを実行する。モジュールが存在しない環境で <IfModule> なしに書くと 500 エラーでサイトダウンになるため、必ず囲む。


    # mod_rewrite が有効なときだけ実行される
    RewriteEngine On
    ...

RewriteCond — 条件(if 文)

直後の RewriteRule を実行するかどうかを判定する条件文。複数行並べるとデフォルトで AND 条件(すべて満たしたときだけ実行)。

RewriteCond %{テスト文字列} パターン [フラグ]

RewriteRule — 処理の実行

条件を満たした場合に URL の書き換えやリダイレクトを実行する。

RewriteRule パターン 置換先 [フラグ]

ディレクティブとフラグの詳細は ディレクティブ・フラグ解説ガイド で解説している。


注意事項

編集前に必ずバックアップを取る

.htaccess の記述ミスは 即座に 500 エラー(サイトダウン) につながる。編集前にかならずバックアップを取っておくこと。

バックアップ方法 手順
FTP / ファイルマネージャー 既存の .htaccess をダウンロードしてローカルに保存
ファイル名を変えてコピー サーバー上で .htaccess.bak などにリネームコピー

500 エラーが出たときのリカバリ

編集後に 500 エラーが発生したら、バックアップファイルを元の名前に戻せばサイトは復旧する。詳しいリカバリ手順は リカバリ方法ガイド を参照。

← ジェネレーターに戻る