2009-06-04 14 views
1

Ich bin ein Neuling zu mod_rewrite und ich frage mich, ob es eine Möglichkeit gibt, Sie auf Skript schreiben, das behandelt und die Anzahl der Variablen, die Sie werfen.mod_rewrite für eine beliebige Anzahl von Variablen

Beispiel:

www.krisnicolaou.com/index.php?id=5&sort=asc&limit=25&param=first_name

zu

www.krisnicolaou.com/5/asc/25/first_name

... aber können Sie auch diese Variablen in einer anderen Seite übergeben, und es wäre mit, dass ein Skript arbeiten:

www.krisnicolaou.com/index.php?page=view&action=add

zu

www.krisnicolaou.com/view/add/

ich im Wesentlichen nicht will, wie viele Parameter beschränkt sein ich am Ende hinzufügen, auf und nicht muß ständig die .htaccess-Datei ändern.

Vielen Dank im Voraus.

+0

Sie möchten also, dass die angeforderten URLs des ersten Formulars ('/index.php? Page = view & action = add') extern in das zweite Formular ('/view/add/') umgeleitet werden? Oder willst du lieber die umgekehrte Richtung? – Gumbo

Antwort

1

Etwas wie this.

+0

Torez und great_llama, also war einer von euch mit ihm verbunden, und der andere akzeptierte den Link als Antwort, aber keiner von euch dachte, dass die ursprüngliche Antwort eine Aufwertung wert war? Wo ist die Liebe? – bmb

1

Normalerweise möchte man "saubere" URLs nehmen und sie in Parameter umwandeln. Was Sie verlangen, ist das Gegenteil. Hier ist ein getesteter Regelsatz.

RewriteEngine on 

RewriteCond %{QUERY_STRING} !^$ 
RewriteCond %{QUERY_STRING} ^([^=]*)=([^&]*)(&.*)? 
RewriteRule ^(.*/)?([^/]+) $1%2/$2?%3 [L] 

Dies wird ausgeführt, wenn es Parameter sind, und für jeden param, wird es an die URL hinzufügen und aus der param Liste entfernen. Das [N] bewirkt, dass es läuft, bis keine weiteren Parameter mehr vorhanden sind.

Um zu testen, erstelle ich die folgende Struktur:

view 
view/add 
view/add/index.htm 

ich die oben genannten Regeln in einer .htaccess-Datei setzen.

Normaler Test: http://www.theeggeadventure.com/2009/index.htm?page=view&action=add

Zusätzliches params (404) Test http://www.theeggeadventure.com/2009/index.htm?page=view&action=add&foo=bar URL /2009/view/add/bar/index.htm wurde auf diesem Server nicht gefunden.

+1

Hey, danke für die schnelle Antwort, aber aus irgendeinem Grund funktioniert es nicht. Irgendeine Idee warum? Und sag nicht "hast du die Rewrite-Engine eingeschaltet?" :) Danke – Torez

Verwandte Themen