Punt in mod_rewrite matchen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik heb de volgende rewrite rule die matched op URL's zoals image/Test_(0). Het is de bedoeling dat hij ook matcht op image/Test_(0).jpg. Het grote verschil is dat daar ook een punt in zit. Als ik die echter probeer toe te voegen tussen de [ en ] (class) krijgt ik een Internal Server Error ookal is hij correct ge-escapet met een backslash, waar ik hem ook plaats binnen de class. Het werkt wel voor andere karakters en de documentatie van mod_rewrite op Apache 2.0 zegt er ook niks bijzonders over.

code:
1
2
3
4
5
6
#werkt wel
RewriteRule ^image/([:\/\(\)\+_a-zA-Z0-9,-]+)$ /image/image.php?path=$1 [L]

#werkt niet
RewriteRule ^image/([:\/\(\)\+_a-zA-Z0-9,-\.]+)$ /image/image.php?path=$1 [L]
#                                         ^^

Hoe kan ik deze Rewrite Rule laten werken?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
In een character class zou je de punt niet hoeven escapen (en die haakjes, forward slashes e.d. trouwens ook niet!)

Gaat het niet gewoon mis omdat je de punt vóór die hyphen moet toevoegen en niet erna? Anders wordt ,-. (of ,-/) als range geïnterpreteert (vergelijk met a-z) en dat werkt waarschijnlijk niet.

Zo dus:
code:
1
RewriteRule ^image/([:/()+_a-zA-Z0-9,.-]+)$ /image/image.php?path=$1 [L]

[ Voor 14% gewijzigd door Soultaker op 24-05-2009 17:39 ]


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik heb al allerei plaatsen geprobeerd, zelfs als ik de testcase simpeler maak en probeer te matchen op image/test.jpg krijg ik een Internal Server Error met de volgende rule:

code:
1
RewriteRule ^image/([.a-z]+)$ /image/image.php?path=$1 [L]

[ Voor 51% gewijzigd door Johnny op 24-05-2009 17:47 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Ander idee dan: dubbele quotes om je patroon heen? Misschien snapt de Apache configuratie file parser 't gewoon niet.

Welke foutmelding krijg je trouwens precies?

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik heb het probleem al opgelost.

Het komt er op neer dat de regel ook matcht op image/image.php, wat dus een een oneindige loop veroorzaakt. Het is opgelost door er een conditionele regel van te maken die eerst controleert of hij niet matcht met het doelbestand:

code:
1
2
RewriteCond $1 !^image\.php$
RewriteRule ^image/([.:/()+_a-zA-Z0-9,-]+)$ /image/image.php?path=$1 [L]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Hoe ben je er nu achter gekomen? Eindelijk in je log file gekeken zeker? :P
Pagina: 1