Hilfe bei mod_rewrite Regel für dynamische URL
-
05-09-2019 - |
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 ..: (
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.