mod-rewrite
Contexten van herschrijfregels
Zoeken…
Opmerkingen
Dit onderwerp beschrijft de twee contexten waarin RewriteRule
kan worden gebruikt. In voorbeelden waarbij RewriteEngine on
weggelaten, wordt aangenomen dat deze richtlijn vóór dat voorbeeld is opgetreden.
Herschrijf regels in context per map
De context per map is een onderdeel van het statische configuratiebestand tussen de tags <Directory>
en </Directory>
. De volledige inhoud van dynamische configuratiebestanden bevindt zich binnen de context van de map waarin de .htaccess zich bevindt.
RewriteRule
's in per-map context komen overeen met het deel van een url na het protocol, hostnaam, poort en prefix van de map waarin ze zich bevinden, en voor de query string.
In het statische configuratiebestand
Wanneer de volgende regel wordt gebruikt op de URL http://example.com/foo?id=1
, wordt de regex in het eerste argument van RewriteRule
vergeleken met foo
. Het protocol ( http
), de hostnaam ( example.com
) en het voorvoegsel voor deze map ( /
) worden verwijderd. Aan het andere uiteinde wordt ook de queryreeks ( ?id=1
) verwijderd.
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
In het volgende voorbeeld, met behulp van de URL http://example.com/topic/15-my-topic-name
, zou het eerste argument van RewriteRule
worden vergeleken met topic/15-my-topic-name
:
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
In het dynamische configuratiebestand
Wanneer de volgende regel wordt geplaatst in een .htaccess
bestand in de www-rootmap en vervolgens wordt gebruikt op de URL http://example.com/foo?id=1
, wordt de eerste regex vergeleken met foo
.
RewriteRule ^foo$ bar [L]
In de context van de map begint de overeenkomende URL nooit met een
/
. In een dergelijke context zal een richtlijn die begint metRewriteRule ^/
nooit overeenkomen.
Herschrijf regels in context van virtuele host
De context van de virtuele host is een onderdeel van het statische configuratiebestand tussen de tags <VirtualHost>
en </VirtualHost>
.
RewriteRule
's in de context van een virtuele host komen overeen met het deel van een URL na het protocol, de hostnaam en de poort en vóór de queryreeks.
Wanneer de volgende regel wordt gebruikt voor de URL http://example.com/foo?id=1
, wordt de regex in het eerste argument van RewriteRule
vergeleken met /foo
.
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>