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>