Page 1 of 1

RewriteEngine

Posted: 2004-09-21 19:50
by marky
Hallo,

ich habe eine .htaccess-Datei gebastelt, mit deren Hilfe die Anfrage an die Datei test.php in eine Anfrage an die Datei index.php geändert wird.

Code: Select all

RewriteEngine on
RewriteRule ^test.php$ index.php
Leider erhalte ich nun die Anfrage an die Datei index.php sowie für die Anfrage an test.php ein
Forbidden
You don't have permission to access /index.php on this server.
Kann es sein, dass man irgendwo einstellen muss, dass die RewriteEngine benutzt werden darf und wenn ja, wo?

Re: RewriteEngine

Posted: 2004-09-21 22:31
by Roger Wilco
Hast du FollowSymLinks in den Optionen für das Verzeichnis, wie unter http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html beschrieben?

Re: RewriteEngine

Posted: 2004-09-22 09:43
by marky
Hast du FollowSymLinks in den Optionen für das Verzeichnis [...]
Danke, daran lag es.

Vielleicht kann mir jemand noch die Frage beantworten, wie ich diese Zeile eleganter gestalten kann:

Code: Select all

RewriteCond %{REQUEST_URI} ^/test/(([0-9])([0-9])([0-9])([0-9])([0-9])([0-9]))+/(.*)+.htm$
Es soll sicher geprüft werden, ob es sich um eine URI der Form

/test/123456/hallo.htm

handelt, wobei die Zahl 123456 eine sechsstellige sein muss. Ich habe es leider nicht eleganter hinbekommen, als die ([0-9]) sechs mal hintereinander zu reihen, was aber sicher auch anders geht!

Re: RewriteEngine

Posted: 2004-09-22 12:02
by Roger Wilco
marky wrote:Ich habe in der Datei confixx_vhost.conf folgende Zeilen
Und wo ist dann das Problem?

Re: RewriteEngine

Posted: 2004-09-22 12:07
by marky
Und wo ist dann das Problem?
Gibt diesbzgl. keins mehr, aber ein neues (siehe oben).

:-)

Re: RewriteEngine

Posted: 2004-09-22 12:16
by Roger Wilco
marky wrote:Vielleicht kann mir jemand noch die Frage beantworten, wie ich diese Zeile eleganter gestalten kann:
Probier mal [0-9]{6}...

Re: RewriteEngine

Posted: 2004-09-22 12:48
by marky
Probier mal [0-9]{6}...
Die Bedingung ist aber auch dann erfüllt, wenn die Zahl mehr als 6 Stellen hat, was aber nicht sein darf. Nur exakt 6 Stellen sollen es sein...

Re: RewriteEngine

Posted: 2004-09-22 13:00
by BlackEye
marky wrote:Die Bedingung ist aber auch dann erfüllt, wenn die Zahl mehr als 6 Stellen hat, was aber nicht sein darf. Nur exakt 6 Stellen sollen es sein...
Wieso das denn? {6} bedeutet GENAU 6. Zumindest mal in normalen regulären Ausdrücken.
Ansonsten müsste auch {6,6} gehen was explizit mindestens 6 und maximal 6 bedeutet

Re: RewriteEngine

Posted: 2004-09-22 13:08
by Roger Wilco
Du darfst natürlich kein + dahinter schreiben, wie du es in deinem Beispiel oben gemacht hast, sonst werden auch alle Fälle mit mehr als 6 Zeichen gematched.

Re: RewriteEngine

Posted: 2004-09-22 14:26
by BlackEye
Roger Wilco wrote:Du darfst natürlich kein + dahinter schreiben, wie du es in deinem Beispiel oben gemacht hast, sonst werden auch alle Fälle mit mehr als 6 Zeichen gematched.
Das war aber auch schon vorher so und bezieht sich dann auf ein Mehrfaches von 6.

Um es einfach mal deutlich zu machen:

Code: Select all

RewriteCond %{REQUEST_URI} ^/test/[0-9]{6}/.+.htm$ 
Das '(.*)+' aus obigem Beispiel ist ebenfalls etwas redundant. Kannst Du wie bei mir dargestellt abkürzen.

Das wäre meines erachtens nach der reguläre Ausdruck, der meines Wissens nach korrekt ist (auch wenn ich von der Zeile selbst keine Ahnung hab was die machen soll)
Jedenfalls match '[0-9]{6}' definitiv 6 _ziffern_

Edit: Ich weiss nicht, warum die '(' und ')' bei Dir immer vorhanden sind. Normalerweise nimmt man die '()' nur, wenn man auf den gematchten Kontext im Nachhinein zugreifen möchte. Sollte mein obiges Beispiel evtentuell wegen fehlenden Klammern nicht gehen, ist dieser Ausdruck equivalent

Code: Select all

RewriteCond %{REQUEST_URI} ^/test/([0-9]{6})/(.+).htm$