apache mod rewrite
Marc Staedtler
- webserver
Hallo
ich möchte innerhalb eines Unterverzeichnisses alle
Anfragen an ein PHP-Skript weiterreichen.
Also bsp.:
http://www.meinedomain.de/artikel/test.html
http://www.meinedomain.de/artikel/index.html
etc.
habe es mit folgender htaccess im Verzeichnis "artikel" probiert:
RewriteEngine on
RewriteRule ^.*$ index.php [L]
Das funktioniert auch soweit, aber wenn ich das Verzeichnis ohne abschliessenden Slash aufrufe erhalte ich einen 400 Bad Request Fehler vom Server.
Also bei
http://www.meinedomain.de/artikel/
funktioniert es aber bei
http://www.meinedomain.de/artikel
nicht.
Nachdem ich in der Apache Docu und bei Google nichts finden konnte
habe ich mir folgende funktionierende Lösung zusammengebastelt
RewriteEngine on
RewriteRule [1].*$ index.php [L]
Aber das kann es ja nicht wirklich sein oder doch?
Also wie geht es richtig?
Die an einigen Stellen vorgeschlagene zusätzliche RewriteRule
^artikel$ artikel/ [R]
hat bei mir nicht funktioniert.
Danke für Eure Hilfe
Marc
a-zA-Z ↩︎
hi,
habe es mit folgender htaccess im Verzeichnis "artikel" probiert
Nein, das hast du nicht. Deine Datei hieß/heißt bestimmt .htaccess - hier kommt es nun mal auf den vorangestellten Punkt an.
Das funktioniert auch soweit, aber wenn ich das Verzeichnis ohne abschliessenden Slash aufrufe erhalte ich einen 400 Bad Request Fehler vom Server.
Dann ist der Server so eingestellt, daß er eben nur URIs mit nachgestelltem Slash akzeptiert. Das kannst du in einer .htaccess nicht ändern. Da solltest du den Server-Administrator befragen und notfall beschimpfen (aber Schimpfe schnallen die Jungs meistens nicht).
Nachdem ich in der Apache Docu und bei Google nichts finden konnte
habe ich mir folgende funktionierende Lösung zusammengebastelt
RewriteEngine on
RewriteRule [1].*$ index.php [L]
Aber das kann es ja nicht wirklich sein oder doch?
_Wenn_ das funktioniert und du damit weiterleben kannst, dann laß es so.
Also wie geht es richtig?
So, wie es mit den generellen Servereinstellungen übereinstimmt bzw. davon vorgegeben ist.
Grüße aus Berlin
Christoph S.
a-zA-Z ↩︎
Hallo Christoph
Nein, das hast du nicht. Deine Datei hieß/heißt bestimmt .htaccess - hier kommt es nun mal auf den vorangestellten Punkt an.
Schon klar das der Dateiname mit einem Punkt beginnt.
Aber ich sage bzw. schreibe "Ha-Te-Echs-Es"-Datei dazu und nicht
"Punkt-Ha-Te-Echs-Es"-Datei.
Dann ist der Server so eingestellt, daß er eben nur URIs mit nachgestelltem Slash akzeptiert. Das kannst du in einer .htaccess nicht ändern. Da solltest du den Server-Administrator befragen und notfall beschimpfen (aber Schimpfe schnallen die Jungs meistens nicht).
Naja bei "normalen" Verzeichnissen klappt das auch ohne den trailing slash.
_Wenn_ das funktioniert und du damit weiterleben kannst, dann laß es so.
Mich wundert halt nur das ja Rewrite "anspringt",d.h. der Server hat schon mitgekriegt, dass hier das Verzeichnis gemeint ist, und er dann doch nicht mit
RewriteRule ^.*$ index.php [L]
zurechtkommt.
Das müsste doch auch bei einer quasi "leeren" Anfrage klappen.
Gruss Marc