Mod Rewrite - warum funktioniert es nicht?
curryMan
- webserver
0 Der Martin0 curryMan
0 dedlfix0 curryMan
Nabend,
ich habe eine URL wie z.B. http://www.selfhtml.org/test/meinordner/html/
Die htaccess sieht so aus
RewriteEngine on
RewriteRule ^meinordner/(.*)$ /test.php?pfad=$1
Die Datei test.php liegt im Ordner test/meinordner/
Ich habe getestet, ob eine Regel überhaupt greift mit und es war erfolgreich
RewriteRule ^ http://www.google.com [R,L]
Ich habe eigentlich sämtliche Varianten durch, aber keine funktioniert
Beispiel:
RewriteEngine on
RewriteRule ^/(.*)$ /test.php?pfad=$1
RewriteEngine on
RewriteRule ^test/meinordner/(.*)$ /test.php?pfad=$1
Ich verstehe nicht, wo der Fehler liegt, kann mir jemand evtl. helfen?
Gruß
curryMan
Hallo,
ich habe eine URL wie z.B. http://www.selfhtml.org/test/meinordner/html/
für Beispiele möchte man bitte keine real existierenden Domainnamen verwenden (höchstens die eigenen). Dafür gibt es extra die Beispiel-Domains example.com, example.net oder example.org.
Ich verstehe nicht, wo der Fehler liegt, kann mir jemand evtl. helfen?
Dazu solltest du erstmal etwas deutlicher beschreiben, was du genau erreichen möchtest. Ich blick nämlich im Moment auch nicht durch, was du eigentlich hast oder nicht hast, geschweige denn was du gern hättest.
Ciao,
Martin
Hi,
wenn ich diese URL aufrufe http://www.example.com/test/meinordner/html/ erhalte ich eine 404 Seite.
Anhand der Mod Rewrite Regel
RewriteEngine on
RewriteRule ^meinordner/(.*)$ /test.php?pfad=$1
soll diese URL http://www.example.com/test/meinordner/html/ im "Hintergrund" in diese URL
umgeschrieben werden http://www.example.com/test/meinordner/test.php?pfad=html
Die Seite http://www.example.com/test/meinordner/test.php existiert ja. Deswegen soll/müsste die URL http://www.example.com/test/meinordner/html/ ja auch erreichbar sein (wegen der Mod Rewrite Regel).
Das ist aber nicht der Fall. Wie gesagt habe ich schon verschiedene Varianten probiert.
Gruß
curryMan
Hallo,
wenn ich diese URL aufrufe http://www.example.com/test/meinordner/html/ erhalte ich eine 404 Seite.
Anhand der Mod Rewrite Regel
RewriteEngine on
RewriteRule ^meinordner/(.*)$ /test.php?pfad=$1
>
> soll diese URL http://www.example.com/test/meinordner/html/ im "Hintergrund" in diese URL umgeschrieben werden http://www.example.com/test/meinordner/test.php?pfad=html
die Regel besagt aber etwas anderes: Nämlich dass nur URLs umgeschrieben werden, die mit meinordner/ beginnen und danach noch beliebig viele weitere Zeichen haben. Das trifft aber auf dein Beispiel nicht zu, also wird die Regel gar nicht angewendet, es findet folglich kein Rewriting statt.
Ciao,
Martin
--
[Programmierer (m), seltener auch P~in (w)](http://community.de.selfhtml.org/zitatesammlung/zitat110):
Irdische, i.a. humanoide Lebensform, die in einem komplizierten biochemischen Prozess Kaffee, Cola und Pizza in maschinenlesbaren Programmcode umwandelt.
P~ bilden gelegentlich mit ihresgleichen kleine Gruppen, sogenannte Communities, sind aber ansonsten meist scheue Einzelgänger.
P~ sind vorwiegend nachtaktiv und ohne technische Hilfsmittel nur eingeschränkt lebensfähig.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Tach!
ich habe eine URL wie z.B. http://www.selfhtml.org/test/meinordner/html/
Mir wäre es lieber, wenn du diesen Domainnamen nicht hast. Du könntest dir zum Beispiel example.org nehmen.
Die htaccess sieht so aus
RewriteEngine on
RewriteRule ^meinordner/(.*)$ /test.php?pfad=$1
>
> Die Datei test.php liegt im Ordner test/meinordner/
Wo liegt die .htaccess? Und wenn die test.php im Unterordner liegt, warum gibst du dann das DocumentRoot an?
> Ich habe eigentlich sämtliche Varianten durch, aber keine funktioniert
Du hast die Varianten anscheinend ohne RewriteLog/-Level probiert (zum Aktivieren wird Adminberechtigung benötigt). Das würde dir zeigen, was intern abläuft.
dedlfix.
Hallo und vielen Dank für eure Unterstützung!
folgende Regel hat funktioniert
RewriteRule ^(.*)$ test.php?pfad=$1
Danach ergab sich ein neues Problem. Bei einer URL wie
http://www.example.com/test/meinordner/html/formulare/buttons/
War der Wert von $_GET['pfad'] - "test.php", anstatt wie erwartet "html/formulare/buttons/"
Die Lösung dafür habe ich hier gefunden http://www.cosni.de/fragen/4fe32945e8c02/mod_rewrite-urls-mit--slash-erzeugen-404-rewriterule-greift-nicht
Dieser Code hat funktioniert
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test.php?pfad=$1
Gruß
curryMan