[mod_rewrite] laatste slash verwijderen

Pagina: 1
Acties:

  • mtbrainz
  • Registratie: September 2000
  • Laatst online: 21:30
Situatie: Ik heb een pagina waar 'www.blaat.nl/blabla' via mod_rewrite wordt omgezet naar 'www.blaat.nl/index.php?q=blabla'. Dit heb ik gedaan met dezelfde rewrite-rules als beschreven in dit topic.
Werkt goed, probleem is alleen dat als iemand zo stom is om 'www.blaat.nl/blabla/' op te vragen, met een laatste slash dus, dan krijgt men een 404 omdat die dir niet bestaat. Ik heb geprobeerd om via mod_rewrite die laatste slash af te vangen met verschillende regexps, van:
code:
1
RewriteRule /$      index.php

tot
code:
1
RewriteRule ^([^/]*)/(.*)$     ?pid=$1         [NC,R,QSA]

Beide ook met verschillende flags en in verschillende varianten geprobeerd, maar allemaal zonder verschil..
In alle gevallen begint apache flink wat cpu te trekken en blijft dat doen tot ik dat proces kill. Is 't gewoon niet mogelijk om die laatste / te verwijderen? Ik heb wat rondgezocht in de mod_rewrite manual en de Rewriting guide en hier op GoT, kan er alleen niks van vinden. Kijk ik er overheen?

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Heb je de FAQ ook gelezen? Staat ook een stukje in over mod_rewrite: P&W FAQ - PHP.

offtopic:
// wacht ff hier stond iets dat nergens op sloeg :P

[ Voor 76% gewijzigd door ludo op 12-12-2004 12:41 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

Waarom niet gewoon die andere rewriterule aanpassen om dit stukje functionaliteit toe te voegen?
code:
1
RewriteRule ^(.*)/?$ index.php?q=$1 [L,QSA]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • mtbrainz
  • Registratie: September 2000
  • Laatst online: 21:30
Verrek, dat laatste doet wel wat. Probleem is nu alleen dat ineens de plaatjes ook gerewrite worden, terwijl ik wel deze 2 checks op files heb staan:
code:
1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Met als gevolg dat als de url een laatste / heeft, dan krijg ik allemaal dooie plaatjes. Zonder die laatste / weer niet.

[edit] Ongetwijfeld komt dat doordat de plaatjes een relatieve url hebben |:(
Code verbouwen dan maar. Thanks voor de hulp :)

[ Voor 16% gewijzigd door mtbrainz op 12-12-2004 13:00 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

Je kan toch een conditie opnemen voor plaatjes? Of een nieuwe rewriterule maken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

code:
1
RewriteRule (.+)/$ $1 [R]

of iets dergelijks, wellicht? Zorgen dat ze eerst geredirect worden naar de url zonder / dus.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • mtbrainz
  • Registratie: September 2000
  • Laatst online: 21:30
-NMe- schreef op zondag 12 december 2004 @ 13:15:
Je kan toch een conditie opnemen voor plaatjes? Of een nieuwe rewriterule maken?
Ik heb nu een <base href="iets" /> in de html-source gegooid. Werkt me tot nu toe ook goed zat.
CyBeR schreef op zondag 12 december 2004 @ 13:19:
code:
1
RewriteRule (.+)/$ $1 [R]

of iets dergelijks, wellicht? Zorgen dat ze eerst geredirect worden naar de url zonder / dus.
Nee, dat had ik eerst, maar daar ging mijn Apache helemaal door op tilt. Ik heb nu bijna hetzelfde gemaakt als wat -NME- zei:
code:
1
RewriteRule ^([^/]*)/?$ ?q=$1         [L,QSA]

Op deze manier werkt 't goed hier. Die [^/]* is blijkbaar toch nodig ipv .*, anders ging ie hier nog (anders) op tilt.

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 18-05 19:46
Zou dit een oplossingen kunnen zijn?

code:
1
2
3
4
5
6
7
8
# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
# Apache needs to construct a self-referencing URL (a URL that refers back
# to the server the response is coming from) it will use ServerName and
# Port to form a "canonical" name.  With this setting off, Apache will
# use the hostname:port that the client supplied, when possible.  This
# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
#
UseCanonicalName Off


Zie ook http://httpd.apache.org/docs/mod/core.html#usecanonicalname
Pagina: 1