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>