[Apache Rewrite] - Werkt wel in 2.0, niet in 1.3.x

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Onderstaande set van Rewrites werkt wel in Apache 2.0 en niet in Apache 1.3.x. Apache 1.3.x geeft als foutmelding een 400 - Bad Request.

code:
1
2
rewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^n([0-9]+)/(.*)$ /$2?%1&navID=$1 [NE]


Heeft iemand een idee hoe dat komt? De fout zit in de tweede regel. Ik heb al geprobeerd om verschillende onderdelen van de rules te verwijderen (bijvoorbeeld het vraagteken en de '%1'), maar dat alles biedt geen soelaas.

Wat de rule moet doen:
- wanneer er een url is in de vorm van www.domain.nl/n123/blabla.html
- dan moet die worden herschreven tot www.domain.nl/blabla.html?navID=123

Ik zit een beetje met de handen in het haar.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:39

TeeDee

CQB 241

Het verschil (afaik) tussen 2 en 1.3 mod_rewrite is het toevoegen van een [C] flag.

- Zijn de configs tussen de beide apaches goed?
- Options +FollowSymLinks

Wat zegt je error.log?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12-02 14:31

Creepy

Tactical Espionage Splatterer

Move naar WSS aangezien het hier om de verschillen tussen apache gaat i.p.v. de daadwerkelijke regexp.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Weet niet zeker of dit wel een handige topic-move was ... wellicht dat namelijk het verschil kan worden opgelost door de regexp te wijzigen.

Het probleem - zoals ik begrijp uit de errorlog - zit hem in een andere rule. Ik post voor de zekerheid even de volledige set:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Options +FollowSymLinks -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/cms/.*
# Rewrite .html& to .html? and redirect after that.
RewriteRule (.*).html&(.*) $1.html?$2
rewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/(.*).html $1/index.php?page=$2.html&%1 [NE,C]
rewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^n([0-9]+)/(.*)$ /$2?%1&navID=$1 [NE]
rewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*).html$ index.php?page=$1.html&%1 [NE]


[per-dir /home/customers/<domain>.nl/html/<domain>/] add path-info postfix: /home/customers/<domain>/html/<domain>/n1671/index.php -> /home/customers/<domain>/html/<domain>/n1671/index.php/item.html

Het probleem zit hem dus in het feit dat de path-info postfix foutief opnieuw wordt toegevoegd na de rule op regel 8.

De 'bug' in Apache 1.3 wordt goed beschreven op http://archive.apache.org/gnats/7879.

De vraag is nu dus geworden: hoe kan ik daar omheen werken?

[ Voor 3% gewijzigd door gvanh op 11-12-2007 12:24 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:39

TeeDee

CQB 241

De C flag zorgt ervoor dat de huidige rule gegroepeerd wordt met de volgende. Is dat de boosdoener? De C flag snap Apache 1.3 namelijk niet.
Hmm, dat klopt geloof ik niet ;)

[ Voor 12% gewijzigd door TeeDee op 11-12-2007 12:30 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Het feit dat hij niet wordt begrepen/gebruikt is waarschijnlijk wel de boosdoener, maar alleen weghalen is helaas niet voldoende ... het blijft een 'bad request'.

Is er een manier om het gedrag van die gekoppelde regels op een andere wijze voor elkaar te krijgen?


Hmmm ... in dat geval zal het toch wel liggen aan eerdergenoemde bug dat de path-postfix een keer teveel wordt toegevoegd.

[ Voor 20% gewijzigd door gvanh op 11-12-2007 12:33 ]

Pagina: 1