rewritecondとは?初心者向けガイドで学ぶ使い方とポイント共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
rewritecondとは?初心者向けガイドで学ぶ使い方とポイント共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 などとして使えることがあります。以下の表で要点を整理します。

<th>項目
説明
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のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16625viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2981viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1211viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1187viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1068viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1056viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1045viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
991viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
877viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
877viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
823viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
821viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
818viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
760viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
743viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
718viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
637viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
619viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
615viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
550viws

新着記事

インターネット・コンピュータの関連記事