

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
rewritecondとは?
rewritecond は Apache のモジュールである mod_rewrite の条件を指定する機能です。RewriteRule の前に RewriteCond を並べて記述することで、特定の条件が満たされたときだけ URL の書き換えを実行します。RewriteCond の基本は TestString と CondPattern の組み合わせです。TestString は環境変数やリクエストの値などを指す文字列で、CondPattern はそれに対する正規表現です。複数の条件はデフォルトで AND 条件として評価されますが、条件の間に OR を挟みたい場合は各 RewriteCond 行に [OR] フラグを使います。
基本の書き方と意味
RewriteCond の基本的な形は次のとおりです。RewriteCond TestString CondPattern という順番で記述します。TestString には %{HTTPS} や %{HTTP_HOST} などの環境変数を使い、CondPattern には正規表現を使います。たとえば HTTPS でない場合にリダイレクトするには次のように書きます。
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
この例では HTTPS が off の場合のみ RewriteRule が実行されます。別の例として、ドメインが特定の名前であるときだけ処理を走らせたい場合は以下のようにします。
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
実践的な例と注意点
以下は実務でよく使われる例です。まずは「サブディレクトリの書き換え」と「スマホとPCでの振り分け」です。
例1: HTTPS へ強制リダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
例2: 特定のディレクトリへアクセスしたときの書き換え
RewriteCond %{REQUEST_URI} ^/blog/
RewriteRule ^blog/(.*)$ /blog-new/$1 [L]
例3: ドメインの統一と www の強制
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
テストとデバッグのコツ
複数の条件が並ぶときは、すべての条件が満たされるときだけ RewriteRule が適用されます。もし 1 つの条件だけを優先したい場合は OR フラグを使います。例えば以下のように書き、スマホとPCで別の動作をさせることができます。
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android) [OR]
RewriteCond %{QUERY_STRING} id=
RewriteRule ^(.*)$ mobile.php?path=$1 [L]
よくある注意点と表でのポイント整理
正規表現のエスケープには注意してください。特にドットは \. のようにエスケープします。CondPattern にキャプチャを取る部分があると、そのキャプチャは RewriteRule の置換式で %1, %2 などとして使えることがあります。以下の表で要点を整理します。
| 説明 | |
|---|---|
| RewriteCond の基本形 | RewriteCond TestString CondPattern の順で記述 |
| TestString の例 | %{HTTPS}、%{HTTP_HOST}、%{REQUEST_URI} など |
| CondPattern の例 | 正規表現を使って条件を表現。例: ^example\\.com$ |
| AND/OR の使い分け | デフォルトは AND。∀ 条件を OR にするには [OR] フラグを使う |
まとめ
rewritecond は URL の書き換えを条件付きで行いたいときに非常に便利な機能です。正しく使えばサイトの SEO やパフォーマンス向上に役立ちます。初心者のうちから基本の書き方とよく使う条件を覚え、実際のサーバー設定ファイルに少しずつ落とし込んでいくと良いでしょう。重要なのは条件の順序と OR の使い方を理解すること、そして Unicode やエンコードの扱いに注意することです。
rewritecondの関連サジェスト解説
- rewritecond expr とは
- このページでは、rewritecond expr とは何かを、中学生にもわかる自然な日本語で解説します。まず、mod_rewrite という Apache の機能について簡単に説明します。URL を動的に書き換えることができ、ウェブサイトの表示方法を柔軟に変えるために使います。その前提となるのが RewriteRule ですが、書き換えの前に条件を決める役割を果たすのが RewriteCond です。従来は、RewriteCond で使えるのは正規表現や変数の値を使った照合が主でした。ところが Apache 2.4 以降では「expr(式)」という新しい評価方法が導入され、RewriteCond の条件を式で記述できるようになりました。これを「rewritecond expr」と呼ぶことが多いです。 expr の良いところは、複数の情報を組み合わせて判断できる点です。例えば、リクエストの URI、クエリ文字列、HTTP ヘッダの値などを同時に見て、AND・OR・NOT のような論理演算で条件を作れます。正規表現だけでは難しい条件分岐が、式を使えば直感的に書けることがあります。ただし、式の書き方は正規表現とは別のルールなので、少し覚える必要があります。使い方を間違えるとサーバの負荷が増えたり、予期せぬ挙動になることがあるので、テストを丁寧に行いましょう。使い方のコツは、読みやすさを最優先にすることです。複雑な式は複数の RewriteCond に分解して、段階ごとに評価すると理解しやすくなります。デバッグにはエラーログを活用してください。現代の Apache では古い RewriteLog は使われず、ErrorLog への出力で問題点を探します。最後に、公式ドキュメントを参照することをおすすめします。公式には具体的な書き方の例が多数あり、変数の解説や演算子の意味が詳しく説明されています。
rewritecondの同意語
- RewriteCond
- Apache の mod_rewrite における RewriteCond ディレクティブそのもの。RewriteRule が適用される前に条件を検証するための式を置く要素。
- Rewrite Condition
- RewriteCond の英語表記。RewriteRule の適用可否を左右する条件式を表す。
- リライト条件
- 日本語表現での呼び方。リライト処理の前提となる条件のこと。
- 条件付きリライト
- 条件が成立した場合にのみ適用される、リライト処理の考え方を指す表現。
- リライト条件ディレクティブ
- RewriteCond を指す日本語表現。条件を定義するディレクティブという意味。
- Rewrite 条件ディレクティブ
- RewriteCond の別称として使われることがある日本語表現。
rewritecondの対義語・反対語
- 条件なし
- RewriteCondがなく、RewriteRuleだけが適用される状態を指します。条件分岐によらず、リライトが行われる設定のことです。
- 無条件適用
- RewriteCondを使わず、条件が検証されずにRewriteRuleが適用されること。条件の存在を前提としない動作を表します。
- 常時適用
- 条件を問わず、常にリライトが実行される状態を指す表現です。
- 条件検証不要
- RewriteCondの検証を不要とするイメージ。条件チェックなしにリライトが走る設定を意味します。
- デフォルト動作
- RewriteCondなしの場合のデフォルトの挙動を示す表現です。
- RewriteRuleのみ
- RewriteCondを用いずRewriteRuleだけでリライトを行う構成を指します。
- 無条件リライト
- 条件なしでリライトが実行されることを示す表現です。
- 条件を持たないリライト
- 文字どおり条件を持たないリライトのことです。
- 条件なしリライト
- 条件のないリライトを指す日常的な表現です。
rewritecondの共起語
- RewriteEngine
- mod_rewrite機能を有効化または無効化するディレクティブ。
- RewriteRule
- URLの書換えルールを定義する命令。RewriteCondと組み合わせて条件付きの書換えを実現する。
- RewriteCond
- RewriteRuleの適用条件を定義するディレクティブ。TestStringとCondPatternを使って判定する。
- REQUEST_URI
- リクエストのパス部分(URI)を表すサーバ変数。通常、書換えの対象を決める際に使う。
- HTTP_HOST
- リクエストのホスト名を表すサーバ変数。ドメイン別の分岐で使われる。
- QUERY_STRING
- URLのクエリ文字列を表すサーバ変数。クエリに基づく条件分岐で使われる。
- REMOTE_ADDR
- クライアントのIPアドレス。アクセス制御などに使われる。
- REQUEST_FILENAME
- リクエストされたファイルの物理パスを表す。ファイル/ディレクトリの存在チェックに使われる。
- THE_REQUEST
- クライアントが送ったHTTPリクエストの全体文字列(1行)。特定のリクエスト情報を条件に使う時に使う。
- SERVER_NAME
- サーバー名(ホスト名)。仮想ホストの判断や検証に使われる。
- REQUEST_SCHEME
- http か https かのスキームを示す。HTTPS 判定に有効。
- HTTPS
- HTTPS が有効かどうかを示す変数(on/off)。
- ENV
- 環境変数を条件として参照する。ENV:VAR の形で使う。
- TestString
- RewriteCond が評価対象とする文字列(TestString)。
- CondPattern
- TestString に適用する条件パターン。正規表現や文字列一致を指定する。
- Backreferences
- RewriteRule のキャプチャ結果を条件内で参照する場合に使われるバックリファレンス(%1 など)。
- Negation
- CondPattern の先頭に '!' を付けて、条件を否定する表現。
- ORFlag
- RewriteCond の [OR] フラグ。前後の条件を論理和で結ぶ。
- NCFlag
- RewriteCond の [NC] フラグ。大文字小文字を区別せず比較する設定。
- -f
- 指定パスが通常ファイルとして存在するかを判定する条件。
- -d
- 指定パスがディレクトリとして存在するかを判定する条件。
- -s
- ファイルが非空かを判定する条件。
- -l
- シンボリックリンクが存在するかを判定する条件。
- -x
- ファイルが実行可能かを判定する条件。
- RewriteBase
- 相対パスの基準ディレクトリを設定するディレクティブ。
- RewriteMap
- 外部プログラムやファイルを使って値を変換する機能。
- mod_rewrite
- Apacheのモジュール名。RewriteCond/RewriteRule を提供する核機能。
- .htaccess
- この機能を適用する設定ファイル名。Per-dir での動作を定義する。
rewritecondの関連用語
- RewriteCond
- RewriteRule の前提となる条件式を記述するディレクティブ。TestString と CondPattern で構成され、複数行で使うときは OR フラグを使って条件を組み合わせます。
- RewriteRule
- 実際の書換えルール。パターンと置換を指定し、RewriteCond の条件を満たした場合に URL の変換が行われます。
- RewriteEngine
- mod_rewrite の処理を有効にするかどうかを切り替えるディレクティブ。On にすると RewriteCond/RewriteRule が適用されます。
- RewriteBase
- 相対パスでのリライト時の基準ディレクトリを指定します。主に per-dir コンテキストで使われます。
- RewriteMap
- 外部データを参照して値を変換する機能。ファイル、プログラム、文字列などを使って変換ルールを拡張します。
- TestString
- RewriteCond の左側に置くテスト対象文字列。%{VAR} の形でサーバー変数を参照することが多いです。
- CondPattern
- RewriteCond の右側。正規表現を用いたマッチや -f/-d/-s などのファイル属性テストを指定します。前に ! を付けて否定条件にできます。
- -f
- TestString が通常のファイルとして存在する場合に真になります。
- -d
- TestString がディレクトリとして存在する場合に真になります。
- -s
- TestString のファイルサイズが 0 より大きい場合に真になります。
- -l
- TestString がシンボリックリンクの場合に真になります。
- -x
- TestString が実行可能なファイルの場合に真になります。
- Negation
- CondPattern の前に ! を置くと結果を否定します(例: %{REQUEST_FILENAME} !-f)。
- OR
- RewriteCond の末尾に [OR] を付けると、直前の条件と論理 OR で結びます。複数条件を組み合わせるときに便利です。
- PCRE
- 正規表現エンジンは PCRE(Perl Compatible Regular Expressions)を使用します。RewriteCond/RewriteRule のパターンマッチに用いられます。
- REQUEST_URI
- クライアントがリクエストした URL のパス部分。条件分岐で頻繁に使われます。
- REQUEST_FILENAME
- リクエストされたファイルの実パス。ファイルの存在判定や属性判定に使われます。
- HTTP_HOST
- リクエストの Host ヘッダの値。ドメイン判定やサブドメイン分岐に利用されます。
- QUERY_STRING
- URL の ? 以降のクエリ文字列。条件分岐で使われることが多いです。
- THE_REQUEST
- クライアントが送った元のリクエスト行。高度なマッチに使われますが取り扱いには注意が必要です。
- ENV
- 環境変数を %{ENV:NAME} の形で参照します。サーバー環境に依存した分岐に役立ちます。
rewritecondのおすすめ参考サイト
- RewriteRuleとは?意味をわかりやすく解説 - SEOタイムズ
- Apacheモジュールmod_rewriteのRewriteCondの基本
- htaccessのRewriteCondとは何か?%{REQUEST_FILENAME} !-f, -d
- 【mod_rewrite】 RewriteCondとは? – mod rewrite - ysklog



















