RewriteEngine

Apache, Lighttpd, nginx, Cherokee
Post Reply
marky
Posts: 66
Joined: 2003-06-18 12:49
 

RewriteEngine

Post 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?
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: RewriteEngine

Post 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?
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: RewriteEngine

Post 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!
Last edited by marky on 2004-09-22 12:05, edited 1 time in total.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: RewriteEngine

Post by Roger Wilco »

marky wrote:Ich habe in der Datei confixx_vhost.conf folgende Zeilen
Und wo ist dann das Problem?
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: RewriteEngine

Post by marky »

Und wo ist dann das Problem?
Gibt diesbzgl. keins mehr, aber ein neues (siehe oben).

:-)
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: RewriteEngine

Post 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}...
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: RewriteEngine

Post 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...
BlackEye
Posts: 81
Joined: 2003-09-04 11:02
Location: Eschwege
Contact:
 

Re: RewriteEngine

Post 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
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: RewriteEngine

Post 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.
BlackEye
Posts: 81
Joined: 2003-09-04 11:02
Location: Eschwege
Contact:
 

Re: RewriteEngine

Post 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$
Post Reply