Frage

Ugh .. mod_rewrite macht mich dumm fühlen. Ich habe einfach nicht mein Gehirn um es noch gewickelt. : /

Ich habe diese URL:

http://example.com/a/name/

... das möchte ich hier Punkt:

http://example.com/a/index.php?id=name

... wo name ist das, was passiert immer als index.php Argument id.

Alles, was ich habe versucht, führt entweder eine 404 oder ein 500 ..: (

War es hilfreich?

Lösung

So starten Sie aus:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]

Wenn ein Rewrite-Tutorial funktioniert nicht für Sie, versuchen Sie einen anderen .

Edit: ausgeschlossen index.php per Gumbo Vorschlag

Andere Tipps

Wenn Sie die Schrägstrich sein optional wollen, müssen Sie die Datei ausschließen Sie die Anforderung neu schreiben. Sonst werden Sie eine schöne unendliche Rekursion haben.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]

Hier jede Anforderung, die mit /a/… beginnt aber nicht /a/index.php wird /a/index.php neu geschrieben.

Aber wenn der Schrägstrich zwingend vorgeschrieben ist, besteht keine Notwendigkeit, die Zieldatei auszuschließen:

RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]

Vielleicht etwas entlang der Linien von

RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]

würde den Trick tun.

Ich schlage vor, Sie nehmen einen Blick auf diese URL:

http://www.dracos.co.uk/code/ apache-Rewrite-Problem /

Die vorgestellten Lösungen funktionieren werden, aber es gibt einige Einschränkungen in der URL erklärt, vor allem in Bezug auf? und # in den URLs selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top