Ik kwam toevallig vandaag een enigzinds vergelijkbare vraag tegen omtrent mod_rewrite.
Om mijn website goed overzichtelijk te houden maak ik gebruik van een soort thema's.
In de "algemene" site kan ik pagina's maken waarbij ik de extentie .html wil gebruiken. Dat is wat ik "verplicht"
Voor het benaderen van een thema wil ik dat iets anders hebben. Ik wil daarbij afvangen dat ik naar de correcte php file ga. Zo moet http://www.domain.com/theme, http://www.domain.com/theme/ en http://www.domain.com/theme/index.html allemaal dezelfde file verwijzen. Met andere woorden, optioneel is dat men een slash gebruikt, maar in alle andere gevallen moet het eindigen op .html.
Wat ik nu heb en dus nog niet helemaal goed werkt:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^theme(.*([/?]|[.html]))$ index.php?category=theme&filename=$1&%{QUERY_STRING} [L]
RewriteRule ^(.*).html$ index.php?filename=$1&%{QUERY_STRING} [L]
om het voorbeeld te verduidelijken:
http://www.domain.com niets bijzonders
http://www.domain.com/theme.html is correct, pagina van de "root"
http://www.domain.com/theme door naar index met category theme
http://www.domain.com/theme/ door naar index met category theme
http://www.domain.com/theme/index.html door naar index met category theme
http://www.domain.com/theme/index mag niet, ik hoor dan .html te verwachten
http://www.domain.com/theme/index/contact.html mag wel, is pagina van theme
[size=xsmall]Toevoeging op 20/10/2012 16:14:42:[/size]
Op dit moment opgelost door gebruik te maken van 2 rules
Totaal wordt voor mij:
RewriteRule ^theme/?$ index.php?category=theme&filename=index&%{QUERY_STRING} [L]
RewriteRule ^theme/(.*).html$ index.php?category=theme&filename=$1&%{QUERY_STRING} [L]
Suggesties zijn altijd welkom!