Moderator |
|
Hmm, wellicht als je de RewriteRules eens omdraait? Dus eerst de meeste specifieke (city+filter) en dan pas de andere (city). De eerste RewriteRule wordt namelijk altijd uitgevoerd in jouw huidige volgorde denk ik, de tweede komt dan nooit aan bod.
EDIT: Heb nog even het e.e.a. nagelezen over RewriteRules: de eerste RewriteRule (waarvan het patroon voldoet) voert de patroon-match uit op het URL-pad. Alle daaropvolgende RewriteRules matchen hun patroon op de uitvoer van de laatste voorgaande RewriteRule - die wordt dan weer als invoer gebruikt.
Het voorstel wat ik hierboven gaf was dus niet helemaal volledig, je moet de volgende twee dingen doen:
- zet de RewriteRules in de volgorde meest-specifiek naar minst-specifiek
- zorg ervoor dat er maar maximaal één RewriteRule wordt uitgevoerd, dit doe je met de [L] (Last) flag. Zodra een RewriteRule matcht, moet er gestopt worden met het rewrite-proces
het volgende zou dus moeten werken (er vanuit gaande dat de voorheen geschreven code werkte):
RewriteCond %{HTTP_HOST} !www.adres.eu$ [NC] # Presuming you don't want to do www
RewriteCond %{HTTP_HOST} ^(.*)\.adres\.eu [NC] # Catch subdomain
RewriteCond %{REQUEST_URI} !index\.php [NC] # Don't rewrite if we already have
# Rewrite from most-specific to least specific, immediately stop upon first match
RewriteRule ^filter/?([a-z/]+)$ index.php?city=%1&filter=$1 [L]
RewriteRule ^(.*)$ index.php?city=%1 [L]
RewriteCond %{HTTP_HOST} !www.adres.eu$ [NC] # Presuming you don't want to do www RewriteCond %{HTTP_HOST} ^(.*)\.adres\.eu [NC] # Catch subdomain RewriteCond %{REQUEST_URI} !index\.php [NC] # Don't rewrite if we already have # Rewrite from most-specific to least specific, immediately stop upon first match RewriteRule ^filter/?([a-z/]+)$ index.php?city=%1&filter=$1 [L] RewriteRule ^(.*)$ index.php?city=%1 [L]
|