mod-rewrite
Sammanhang med omskrivningsregler
Sök…
Anmärkningar
Detta ämne beskriver de två sammanhang där RewriteRule
kan användas. I exempel som utelämnar RewriteEngine on
antas det att detta direktiv har inträffat före exemplet.
Omskriva regler i sammanhanget per katalog
Kontextet per katalog är en del av den statiska konfigurationsfilen mellan <Directory>
och </Directory>
taggar. Hela innehållet i dynamiska konfigurationsfiler ligger inom katalogen per katalog för den mapp där .htaccess finns.
RewriteRule
i sammanhang per katalog matchar den del av en url efter protokollet, värdnamn, port och prefix för katalogen där de finns, och före frågesträngen.
I den statiska konfigurationsfilen
När följande regel används på url http://example.com/foo?id=1
, matchas regexen i det första argumentet i RewriteRule
mot foo
. Protokollet ( http
), värdnamnet ( example.com
) och prefixet för den här katalogen ( /
) tas bort. I den andra änden tas även frågesträngen ( ?id=1
) bort.
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
I följande exempel, med hjälp av url http://example.com/topic/15-my-topic-name
, skulle det första argumentet från RewriteRule
matchas mot topic/15-my-topic-name
:
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
I den dynamiska konfigurationsfilen
När följande regel placeras i en .htaccess
fil som finns i mappen www-root och sedan används på url http://example.com/foo?id=1
, matchas den första regexen mot foo
.
RewriteRule ^foo$ bar [L]
I sammanhang per katalog startar den matchade url aldrig med a
/
. I ett sådant sammanhang kommer ett direktiv som börjar medRewriteRule ^/
aldrig att matcha någonting.
Omskriva regler i virtuell värdkontext
Det virtuella värdkontextet är en del av den statiska konfigurationsfilen mellan <VirtualHost>
och </VirtualHost>
taggarna.
RewriteRule
's i virtuell värdkontext matchar den del av en url efter protokollet, värdnamn och port och före frågesträngen.
När följande regel används för url http://example.com/foo?id=1
, matchas regexet i det första argumentet i RewriteRule
mot /foo
.
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>