ルーティング: URL リライトと SSI¶
このページでは、URL を内部で書き換える「リライト機能」と、HTML 内に他ファイルの内容を取り込む「SSI(Server Side Include)」を説明します。サイト移行時の旧 URL 対応や、ヘッダ・フッタの共通化に活用します。
このページは ルート設定 の続きです。
URL リライト(RewriteRule)¶
リライト機能は、リクエスト URL のパターンマッチと書き換え・リダイレクトを設定する仕組みです。
1 つのルートに複数のリライトルールを登録でき、登録順に評価されます。

リライトルールの設定¶
| 項目 | 説明 | 必須 |
|---|---|---|
| ルート名 | このルールの識別名 | いいえ |
| パターン | マッチする URL の正規表現 | はい |
| アクション | マッチ時の動作 | はい |
| リライト URL | 転送先 URL | アクションによる |
| 備考 | メモ・説明(最大 512 文字) | いいえ |
アクション一覧¶
| アクション | HTTP ステータス | 説明 | リライト URL |
|---|---|---|---|
| 200 | 200 OK | 内部フォワード(URL を変えずに別パスへ) | 必須(/ で始まる相対パス) |
| 301 | 301 Moved Permanently | 恒久的リダイレクト | 必須 |
| 302 | 302 Found | 一時的リダイレクト | 必須 |
| 403 | 403 Forbidden | アクセス拒否 | 不要 |
| 410 | 410 Gone | リソース削除済み | 不要 |
キャプチャ参照¶
パターンの正規表現グループを、リライト URL から $1 $2 ... で参照できます。
→ /old-blog/my-article が /new-blog/my-article に転送されます。
%{変数名} を使うと、条件で参照した変数値も利用できます。
リライト条件(RewriteCond)¶
リライトルールに条件を追加できます。複数の条件を組み合わせて、特定のリクエストにのみルールを適用する用途で使います。
条件の設定項目¶
| 項目 | 説明 | 必須 |
|---|---|---|
| 条件タイプ | 評価対象の変数(最大 64 文字) | はい |
| 条件値 | マッチング条件(最大 4096 文字) | はい |
| 論理演算 | 次の条件との結合(AND / OR) | はい |
利用できる変数(条件タイプ)¶
リクエストヘッダ:
| 変数 | 内容 |
|---|---|
%{HTTP_USER_AGENT} |
ブラウザのユーザーエージェント |
%{HTTP_REFERER} |
リファラー URL |
%{HTTP_COOKIE} |
Cookie |
%{HTTP_HOST} |
Host ヘッダ |
%{HTTP_ACCEPT} |
Accept ヘッダ |
%{HTTP:Accept-Language} |
Accept-Language |
%{HTTP:X-Forwarded-For} |
X-Forwarded-For |
%{HTTP:X-Forwarded-Host} |
X-Forwarded-Host |
%{HTTP_PROXY_CONNECTION} |
プロキシ接続ヘッダ |
リクエスト情報:
| 変数 | 内容 |
|---|---|
%{REMOTE_ADDR} |
クライアント IP アドレス |
%{REQUEST_METHOD} |
HTTP メソッド |
%{REQUEST_URI} |
リクエスト URI |
%{PATH_INFO} |
URL のパス部分 |
%{QUERY_STRING} |
クエリストリング |
%{SERVER_NAME} |
サーバーホスト名 |
%{SERVER_PORT} |
サーバーポート番号 |
%{HTTPS} |
HTTPS 接続時は on、それ以外は off |
日時:
| 変数 | 範囲 |
|---|---|
%{TIME_YEAR} |
4 桁の年(例: 2026) |
%{TIME_MON} |
月(01〜12) |
%{TIME_DAY} |
日(01〜31) |
%{TIME_HOUR} |
時(00〜23) |
%{TIME_MIN} |
分(00〜59) |
%{TIME_SEC} |
秒(00〜59) |
%{TIME_WDAY} |
曜日(1=日 〜 7=土) |
%{TIME} |
UNIX タイムスタンプ(ミリ秒) |
条件値の書き方¶
正規表現でのマッチ:
正規表現は大文字・小文字を区別しません。
比較演算子:
| 演算子 | 意味 | 例 |
|---|---|---|
== |
等しい | ==on |
!= または <> |
等しくない | !=off |
<、<= |
より小さい・以下 | <100 |
>、>= |
より大きい・以上 | >=2026 |
AND と OR の評価¶
複数条件を組み合わせる場合の評価ルールは以下の通りです。
- 連続する OR 条件を先にグループ化して評価
- OR グループ間は AND で結合
例: 条件 A(AND), B(OR), C(AND), D の場合は (A) AND (B OR C) AND (D) として評価されます。
リライトルールの設定例¶
例 1: スマートフォン向けにリダイレクト
パターン: /(.*)
アクション: 302
リライト URL: /sp/$1
条件: %{HTTP_USER_AGENT} = .*iPhone.* [OR]
%{HTTP_USER_AGENT} = .*Android.*
例 2: 深夜帯にメンテナンスページ
例 3: 旧 URL からの恒久リダイレクト
バリデーション¶
入力時に以下のルールでチェックされます。
- パターン — 必須・有効な正規表現
- アクション — 200 / 301 / 302 / 403 / 410 のいずれか
- リライト URL — 200 / 301 / 302 で必須、最大 512 文字。200 の場合は
/で始まる相対パス - 条件タイプ — 最大 64 文字
- 条件値 — 最大 4096 文字、有効な正規表現
SSI(Server Side Include)¶
SSI は、HTML ページ内に他のファイルの内容を埋め込む機能です。ヘッダ・フッタなど、複数ページで共通の部品を 1 ヶ所で管理する用途に使います。
インクルードの設定¶
- エディタ画面のツールバーで インクルード ボタンをクリックします。
- インクルード対象のファイルを指定します。
- 必要に応じてデータ取得用のクエリ(後述)を設定します。
- 保存します。
インクルードの設定項目¶
| 項目 | 説明 | 必須 |
|---|---|---|
| 名前 | このインクルードの識別名(最大 64 文字、英数字) | はい |
| テンプレート | インクルードする HTML ファイルのパス | はい |
| クエリ | データ取得用のクエリ(JSON 形式) | いいえ |
インクルードのタイプ¶
| タイプ | 説明 |
|---|---|
| class | CSS クラスセレクターで対象要素を選び、その内側を差し替え |
| type | スクリプト実行位置 (script position) を指定してインクルード |
| fragment | フラグメントセレクターで対象要素を選び、HTML を差し込み |
インクルードのバリデーション¶
設定後、編集画面の バリデーション ボタンで設定内容を検証できます。テンプレートのパスが存在しない、クエリ構文が不正、などの問題を保存前にチェックできます。
次に読むページ¶
- ルート設定
- データバインディング — SSI のクエリ記法はバインドと同じです
- 出力形式とキャッシュ