PDA

Bekijk Volledige Versie : [apache] url rewriting problemen



Erik Hensema
05/09/05, 20:55
Goedenavond,

Ik ben bezig met het maken van een site die url rewriting
gebruikt. Nu zitten er een aantal standaard html elementen in de
site die op elke pagina wat GET argumenten kunnen accepteren.

Specifiek: het gaat om een knop waarmee je het lettertype van de
site kunt vergroten (dit omdat er veel ouderen in de doelgroep
zitten).
Elke pagina kan dus worden aangeroepen met ?size=normal of
?size=large om de fontgrootte in te stellen. Dat wordt vervolgens
in de sessie opgeslagen.

Nu gaat dat mis met url rewriting. Of mis: ik wil eigenlijk
liever niet twee extra rewrite rules per pagina maken.

Zoiets zou kunnen denk ik:

RewriteRule ^lezen/(\d+)(/normaal|/groot)? lezen.php?id=$1$2
# Hier nog meer van dat soort regels, voor elke pagina eentje

# Op het laatst
RewriteRule (.*?)/normaal $1&size=normal
RewriteRule (.*?)/groot $1&size=large

Maar dan komt de url er verminkt uit. Ik krijg alleen id=NN door
in $_GET. 't Is me ook niet helemaal duidelijk of ik de
herschreven url uit kan lezen in php, dus dat helpt debuggen ook
niet echt.

Tweede poging is:
RewriteRule (.*?)/normaal $1?size=normal
RewriteRule (.*?)/groot $1?size=large
(dus met een ? voor de size= ipv een &)
En dit levert alleen een size= in %_GET op.

Iemand een idee hoe dit op te lossen is?
--
Erik Hensema (erik@hensema.net) ICQ# 8280101
Quoting-HOWTO: http://www.leerquoten.nl

Rene Pijlman
06/09/05, 17:35
Erik Hensema:
>'t Is me ook niet helemaal duidelijk of ik de herschreven url uit
>kan lezen in php, dus dat helpt debuggen ook niet echt.

Dat kan ongetwijfeld, maar ik weet niet uit mijn hoofd hoe. Wel een andere
suggestie: maak van de rewrite rules (tijdelijk) redirects door er dit
achter te zetten: [N,R=permanent]

Zoals in deze uit mijn httpd.conf:

# To fix a broken URL from Google with a space inserted after a /
RewriteRule·^(.*)/\ (.*)$ $1/$2 [N,R=permanent]

Dan zie je de gerewrite URL in de adresbalk van de browser, en/of je kunt
hem client-side uit de headers van de HTTP-response aflezen.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl