Matti Maekitalo: mod_rewrite problem mit slashes

Beitrag lesen

use Mosche;

Bei http://localhost/artikel/test bekomme ich nur eine 404 anstatt des artikel.php?artikel=test

Zur Erinnerung:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/index.php
RewriteCond %{REQUEST_URI} !/artikel.php
RewriteRule "^(.+)" "artikel.php?artikel=$1"

Jetzt mal ausführlich.
Du hast einen Ordner /artikel und darin liegt eine .htaccess mit oben genanntem Inhalt.
Ich erkläre dir mal, was bei einzelnen Zugriffen passiert:
a) Zugriff auf /artikel/test
Das wird umgeleitet auf /artikel/artikel.php?artikel=test . /artikel/artikel.php deshalb, weil du artikel.php relativ referenziert hast. Wenn du auf /artikel.php?artikel=$1 umleitest, landest du auf /artikel.php?artikel=test

b) Zugriff auf /artikel/test/
Das wird umgeleitet auf /artikel/test/artikel.php?artikel=test/ aus gleichem Grund (lokaler Referenzierung).

Wo liegt deine artikel.php? In artikel (also /artikel/artikel.php)?
Dann leite um auf /artikel/artikel.php?artikel=$1

Die Gänsefüßchen um das Umleitungsziel kannst du weglassen.
Merke: wenn du irgendwie umleitest, referenzier möglichst alles absolut.

RewriteRule "^(.+)$" /artikel/artikel.php?artikel=$1

use Tschoe qw(Matti);

--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.