mod_rewrite: index.php in url durch weiterleitung verstecken
ScaraX
- webserver
Hallo,
folgendes Problem:
Ich möchte bei meiner durch einen redirect bewirken, dass alle Aufrufe von http://www.example.com/irgendwas/index.php auf http://www.example.com/irgendwas/ weitergeleitet werden.
Das ganze wollte ich in einer .htaccess-Datei mit mod_rewrite bewirken.
Allerdings gibt es dabei folgendes zu beachten:
Die index.php liegt immer im selben Ordner wie die .htaccess, allerdings sollte die Rewrite-Regel unabhängig von Domain bzw. URL funktionieren (also für http://www.example.com/index.php nach http://www.example.com/ und für http://example.org/subdir/index.php nach http://example.org/subdir/)
Außerdem könnte hinter index.php noch ein query nach dem Schema "index.php/irgend/welche/daten/", falls möglich sollten die beibehalten werden
("http://example.org/subdir/irgend/welche/daten/")
Hab jetzt stundenlang herumprobiert, aber es nicht mal geschafft überhaupt herauszufinden, ob index.php in der URL eingegeben wurde oder nicht...
Anscheinend hängt der Apache das index.php intern schon an den Dateinamen dran, bevor die .htaccess ausgewertet wird, wodurch ich mit sowas wie %{REQUEST_URI} nix mehr anfangen kann...
Ich hoffe dass mir jemand bei diesem Problem helfen kann :)
MfG
ScaraX
Wie hast dus denn probiert?
Mal in der Richtung versucht?:
RewriteRule (.*)index.php$ /$1 [R]
Gruß Bert
Hi,
Außerdem könnte hinter index.php noch ein query nach dem Schema "index.php/irgend/welche/daten/", falls möglich sollten die beibehalten werden
("http://example.org/subdir/irgend/welche/daten/")Das wäre kein Query, sondern Path_Info.
ja wusste nicht wie ich das nennen sollte ;)
Und wenn du da einfach den "Dateinamen" rauskürzt, dann wird das vermutlich mit einem 404 enden.
Ich hätte wohl noch erwähnen sollen, dass ich in der htaccess datei noch folgendes stehen habe (unter den anderen Rewrites):
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?rewrite=on
Das funktioniert soweit ohne Probleme
http://example.org/subdir/index.php/irgend/welche/daten/
und
http://example.org/subdir/irgend/welche/daten/
werden so beide wie gewünscht von der index.php verarbeitet.
MfG ChrisB
Wie hast dus denn probiert?
Mal in der Richtung versucht?:
RewriteRule (.*)index.php$ /$1 [R]Gruß Bert
Danke für die Antwort, aber das funktioniert so leider nicht.
Die .htaccess-Datei liegt im selben (unter)ordner wie dir index.php-Datei.
$1 ist bei dieser RewriteRule bei meinen Tests immer leer, wodurch der unterordner abgeschnitten wird und immer direkt auf den Hauptordner der Domain geleitet wird.
http://example.org/subdir/index.php leitet also nach http://example.org/
MfG
ScaraX
Hi,
Außerdem könnte hinter index.php noch ein query nach dem Schema "index.php/irgend/welche/daten/", falls möglich sollten die beibehalten werden
("http://example.org/subdir/irgend/welche/daten/")
Das wäre kein Query, sondern Path_Info.
Und wenn du da einfach den "Dateinamen" rauskürzt, dann wird das vermutlich mit einem 404 enden.
MfG ChrisB