mod-rewrite
書き換え規則のコンテキスト
サーチ…
備考
このトピックでは、 RewriteRuleを使用できる2つのコンテキストについて説明します。 RewriteEngine on省略した例では、この例の前にこのディレクティブが発生しているものとします。
ディレクトリごとのコンテキストでルールを書き直す
ディレクトリごとのコンテキストは、間の静的構成ファイルの一部である<Directory>と</Directory>タグ。動的構成ファイルの内容全体は、.htaccessが存在するフォルダのディレクトリごとのコンテキスト内にあります。
ディレクトリごとのコンテキスト内のRewriteRuleは、それらが存在するディレクトリのプロトコル、ホスト名、ポート、プレフィックス、およびクエリ文字列の前にあるurlの部分と一致します。
静的構成ファイル
次のルールがURL http://example.com/foo?id=1で使用されると、 RewriteRuleの最初の引数の正規表現はfooと照合されます。プロトコル( http )、ホスト名( example.com )、およびこのディレクトリ( / )の接頭辞が削除されます。もう一方の端では、クエリ文字列( ?id=1 )も削除されます。
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
次の例では、URL http://example.com/topic/15-my-topic-nameを使用して、 RewriteRuleの最初の引数がtopic/15-my-topic-nameと照合されます。
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
動的構成ファイル
次のルールがwwwルートフォルダにある.htaccessファイルに置かれ、URL http://example.com/foo?id=1で使用されると、最初の正規表現はfooと照合されます。
RewriteRule ^foo$ bar [L]
ディレクトリごとのコンテキストでは、一致するURL は
/始まることはありません 。そのようなコンテキストでは、RewriteRule ^/始まる指示RewriteRule ^/は決して何も一致しません。
仮想ホストコンテキストでのルールの書き換え
仮想ホストのコンテキストは、間の静的構成ファイルの一部である<VirtualHost>と</VirtualHost>タグ。
仮想ホストコンテキスト内のRewriteRuleは、プロトコル、ホスト名、ポートの後ろ、およびクエリ文字列の前のURLの部分と一致します。
URL http://example.com/foo?id=1に次のルールを使用すると、 RewriteRuleの最初の引数の正規表現が/fooと照合されます。
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>