2010-12-29 11 views
0

ich mit mod_rewrite bin sehr neu und ich versuche, meine eigenen Regeln zu bekommen ... Ich habe diese einfache Linie:hinzufügen Schrägstrich auf einer mod_rewrite Regel

RewriteRule ^concorso/(.*)/$ concorso/?iModule=13&iData=$1 [L] 

Es mit URLs arbeitet wie: http://www.mysite.com/concorso/2/ aber nicht mit URLs wie http://www.mysite.com/concorso/2 (kein Schrägstrich)

ich weiß, dass vielleicht dies ein sehr häufiges Problem ist, aber alle Beispiele, die ich online zu finden .. „überdimensionierte“ für diese einfache Regel

Also, wie kann ich automatisch einen Schrägstrich hinzufügen? Bitte beachten Sie, dass eine Regel wie:

RewriteRule ^contatti/$ contatti/?iModule=10 [L] 

fügt automatisch einen Schrägstrich ... Und ich habe auch versucht:

RewriteRule ^concorso/(.*)/?$ concorso/?iModule=13&iData=$1 [L] 

(letzte Slash optional), aber ich erhalte Apache Fehler:

[Wed Dec 29 10:02:41 2010] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 

127.0.0.1 - - [29/Dec/2010:10:02:41 +0100] "GET /concorso/2/ HTTP/1.1" 500 535

Danke für Ihre Hilfe!

+1

Der Fehler ist, weil Sie Führen Sie eine Schleife aus, wenn Sie Ihre URL so umschreiben, dass die umgeschriebene URL auch Ihrer Regel entspricht. – Simon

Antwort

1

Versuchen Sie, die Zeichen zu beschränken, die das Muster akzeptiert, um zu verhindern, dass Ihr Muster dem entspricht, in das Sie umschreiben. Zum Beispiel, wenn Sie nur URLs übereinstimmen /concorso/### wobei ### Stellen sind:

RewriteRule ^concorso/([0-9]+)/?$ concorso/?iModule=13&iData=$1 [L] 

Generell wird dies durch Arbeit nur URLs ohne Abfrage-Strings übereinstimmt, gefunden

RewriteRule ^concorso/([^?]*)/?$ concorso/?iModule=13&iData=$1 [L] 
+0

Dank cdhowie, die ersten Werke perfekt und ich auch Regel mit diesem verbesserten, enthält einen Text: RewriteRule \t \t^concorso// ([0-9] +)/$ \t \t concorso/IModule = (. *)? 13 & iData = $ 2 \t [NC, L] Das zweite Beispiel wirft immer noch einen Fehler – Ivan

Verwandte Themen