Flags in een RewriteRule
Op de voorgaande pagina hebben we voorbeelden gezien van een RewriteRule met twee parameters. Er is echter nog een derde optionele parameter die we kunnen toevoegen. De flags die we hiervoor kunnen gebruiken, zorgen ervoor dat de RewriteRule iets anders zal werken.
Allereerst maar eens een overzicht met de belangrijkste:
[R] - Redirect een url zichtbaar
[F] - Forceert geen toegang tot een url (403 foutmelding)
[L] - Laatste regel. Gebruik dit voor elke regel die niet met een ander verbonden is.
[NC] - Maak de regel niet hoofdlettergevoelig
Een volledig overzicht van alle flags vind je ook op de Mod Rewrite Cheat Sheet:
De werking van deze flags spreekt redelijk voor zich. De actie behorende bij een flag wordt alleen uitgevoerd als de regel waartoe die flag behoort uitgevoerd wordt.
Voorbeeld 6: Een pagina zichtbaar doorverwijzen
Dit voorbeeldje is bijna hetzelfde als voorbeeld 2. Alleen de werking zal iets anders zijn doordat we de [R] flag toegevoegd hebben. Wederom zal de inhoud van nieuw.php getoond worden, maar nu zien we ook dat nieuw.php in de url weergegeven wordt. Kortom, de gebruiker is dus echt doorverwezen naar een andere pagina.
Voorbeeld 7: Pagina bekijken verbieden
Met deze regel is het onmogelijk voor gebruikers om ons .htaccess bestand te bekijken. Ditzelfde kun je natuurlijk met allerlei andere bestanden doen.
Voorbeeld 8: RewriteEngine stoppen na uitvoeren regel
2
3
4
5
6
RewriteBase /
RewriteRule ^tutorials/(.*)/(.*)/(.*)/$ tutorials.php?id=$1&page=$2&replies=$3 [L]
RewriteRule ^tutorials/(.*)/(.*)/$ tutorials.php?id=$1&page=$2 [L]
RewriteRule ^tutorials/(.*)/$ tutorials.php?id=$1 [L]
Zo zou het voorbeeld van de vorige pagina er eigenlijk uit moeten zien. Als immers aan de eerste regel voldaan is, hoeven de regels daaronder niet meer uitgevoerd te worden. Om dat te voorkomen voegen we de [L] flag toe.
Voorbeeld 9a: Toevoegen van ontbrekende /
2
3
4
RewriteBase /
RewriteRule ^tutorials/(.*)$ tutorials/$1/ [R]
RewriteRule ^tutorials/(.*)/$ tutorials.php?id=$1 [L]
Op deze manier wordt aan een url als http://www.jouwsite.nl/tutorials/10, die normaal gesproken een 'pagina niet gevonden' foutmelding zou geven, eerst een / toegevoegd. Nadat dat gedaan is wordt de volgende regel uitgevoerd en de url dus wel op een juiste manier geinterpreteerd.
Een andere oplossing voor dit probleem is het gebruik van het ? uit de reguliere expressie syntax. Dit teken houdt in dat het voorgaande teken 0 of 1 keer mag voorkomen. De RewriteRule ziet er dan als volgt uit.
Voorbeeld 9b: Toevoegen van ontbrekende / (2)
Deze code voegt de / niet daadwerkelijk toe, maar interpreteert de url goed ongeacht of de laatste / er nu wel of niet staat.
Inhoudsopgave
- Inleiding
- Vereiste instellingen
- Basis van Mod Rewrite
- Zoekmachine vriendelijke urls
- Flags in een RewriteRule
- Voorwaarden stellen met RewriteCond
- Slotwoord en referenties