[mod_rewrite] meerdere opeenvolgende RewriteRules

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • barryvanveen
  • Registratie: Oktober 2007
  • Laatst online: 25-09-2023
Hey allemaal,

Ik wist niet helemaal zeker of dit topic hier hoort, het stond zo in "waar hoort mijn topic" maar ik zie weinig andere topics over mod_rewrite.

Ik probeer met mod-rewrite bepaalde domeinen door te verwijzen naar een onderdeel van mijn website. Dit zijn domeinnamen die moeten leiden naar een onderdeel van de website, het gaat dus niet om het hoofddomein maar om een alias.

Als iemand komt van www.domein.nl moet dit worden herschreven naar www.domein.nl/submap/.
Als iemand gaat naar www.domein.nl/foo dan moet dit worden herschreven naar www.domein.nl/submap/foo.

Vooralsnog heb ik de volgende relevante regels in mijn .htaccess staan:

# domein specifieke rules
RewriteCond %{HTTP_HOST} ^(www\.)?domein\.nl(/)?$ [NC]
RewriteCond %{REQUEST_URI} !(^/submap/(.*))$ [NC]
RewriteRule ^(.*)$ submap/$1

# rewriteRules
RewriteRule ^([a-zA-Z0-9_]*)/?$ index.php?hoofd=$1
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/?$ index.php?hoofd=$1&sub=$2
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/page/([a-zA-Z0-9_]*)/?$ index.php?hoofd=$1&sub=$2&page=$3


Het probleem is dat als je www.domein.nl bezoek je uitkomt op www.domein.nl/submap/index.php?hoofd=foo. Dit zou volgens mij door de onderste RewriteRules moeten worden herschreven naar www.domein.nl/index.php?hoofd=submap&sub=foo, wat de goede url zou zijn.

Heeft iemand een idee hoe dit opgelost zou kunnen worden, ik heb al vrij veel geprobeerd met het toevoegen van [R], [L], [N] achter de eerste rule maar het lijkt niets te helpen.

Alvast bedankt!


Barry

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kijk eens naar de volgorde van de laatste drie regels.

edit:
Dat maakt natuurlijk niet uit in zo'n constructie.

[ Voor 39% gewijzigd door CodeCaster op 14-04-2010 15:04 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • barryvanveen
  • Registratie: Oktober 2007
  • Laatst online: 25-09-2023
Ook als ik de volgorde van de regels omdraai verandert er niets. Volgens mij wordt geen van deze regels toegepast, anders zou je ook niet in een directory uitkomen.

Ik heb al geprobeerd de rules te veranderen in

RewriteCond %{HTTP_HOST} ^(www\.)?domein\.nl(/)?$ [NC]
RewriteCond %{REQUEST_URI} !(^/submap/(.*))$ [NC]
RewriteRule ^(.*)$ submap/$1 [R]


Hierdoor zou ik verwachten dat www.domein.nl wordt herschreven naar www.domein.nl/submap/. Hierna volgt een redirect en worden opnieuw de regels toegepast. Echter, omdat in de request_uri nu op "/submap/" staat, zou je volgens mij door moeten gaan naar de algemene RewriteRules. Door die rules zou de uiteindelijke url moeten worden www.domein.nl/index.php?hoofd=submap.

Echter, als ik dat doe verdwijnt alles in een loop en geeft firefox (gelukkig) de melding dat de pagina niet goed doorverwijst. Is mijn tweede RewriteCond dan niet goed?

Acties:
  • 0 Henk 'm!

  • Trubo
  • Registratie: April 2005
  • Laatst online: 12-09 19:13
Zelf maak ik gebruik van RegExr online. Hiermee kan je regular expressions testen en zo mogelijk kijken of je code naar behoren werkt.

http://gskinner.com/RegExr/

Hopelijk heb je hier wat aan

Acties:
  • 0 Henk 'm!

  • barryvanveen
  • Registratie: Oktober 2007
  • Laatst online: 25-09-2023
Het probleem is opgelost met een andere oplossing. Het lijkt erop dat er maar 1 rewrite regel wordt toegepast, ik heb het niet voor elkaar gekregen om daarna nog een keer te laten rewriten.

De huidige oplossing is lelijk en omslachtig, weet iemand of er toch een manier is om meerdere rewrites achter elkaar te doen zonder redirect met [R]? Die redirect zou er namelijk voor zorgen dat in de adresbalk www.domein.nl/submap verschijnt en dat probeer ik juist te voorkomen...