Ich habe eine URL http://localhost/index.php?user=1
. Wenn ich diese .htaccess
Datei hinzufüge
Ich darf jetzt http://localhost/user/1
link verwenden. Aber wie wäre es mit http://localhost/index.php?user=1&action=update
wie kann ich es in http://localhost/user/1/update
machen?
Auch wie kann ich diese URL http://localhost/user/add
machen?
Vielen Dank. Entschuldigung, ich bin relativ neu in .htaccess
.
Danke für die Idee @denoise und @mogosselin. Auch mit @stslavik, um auf einige Nachteile meines Code-Beispiels hinzuweisen.
So mache ich es:
%Vor% mit var_dump($_GET);
auf dem Link localhost/user/1234/update
habe ich
während localhost/user/add
was mein Ziel ist. Ich werde einfach nur andere Sachen unter der Haube mit PHP machen.
Wenn Sie möchten
http://www.yourwebsite.com/index.php?user=1&action=update
in
http://www.yourwebsite.com/user/1/update
Sie könnten
verwenden %Vor%Um die Parameter in PHP zu sehen:
%Vor%Das ist meiner Meinung nach ein bisschen sauberer und sicherer als (. *), was im Grunde bedeutet, dass fast alles akzeptiert wird.
Da du dies mit PHP getaggt hast, füge ich ein wenig Perspektive von dem hinzu, was ich getan habe, und es kann dir helfen oder auch nicht.
Sie können natürlich nur in .htaccess schreiben, wobei Sie auf die Reihenfolge achten. Nehmen wir zum Beispiel an, Sie hätten:
%Vor%Dann sollte es, nach Erhalt
http://localhost/user/1/update
gehe zu
http://localhost/index.php?user=&action=update
und nicht
http://localhost/index.php?user=
Nun, was ich stattdessen getan habe, war alles nach index.php?q=
Dann habe ich index.php verwendet, um zu verarbeiten, wie die Abfrage aufgeteilt wurde. Nehmen wir an, jemand gibt
ein http://www.example.com/user/18239810/update
Das würde nach
gehen http://www.example.com/index.php?q=user/18239810/update
Von dort explodieren Sie die Abfragezeichenfolge entlang des ersten /
, um user
und 18239810/update
zu geben.
Das würde mir sagen, dass ich 18239810/update
an den user
Controller übergeben muss. In diesem Controller explodiere ich das Argument erneut in die Benutzer-ID und den Befehl, und ich kann den Befehl einschalten, um zu sagen, wie die Seite geladen wird, wobei die Benutzer-ID als Argument an die Funktion update
übergeben wird.
Sehr schnell und schmutzig Beispiel (index.php):
%Vor%Das bedeutet natürlich, dass Konstruktoren alle ein String-Argument verwenden müssen, das nach akzeptablen Werten analysiert wird. Sie können dies mit Explodes und Switch-Anweisungen tun, die immer auf die Standard-Startseite zurückgesetzt werden, um einen unberechtigten Zugriff aufgrund von Zufallsraten zu verhindern.
Für /user/add
müssen Sie eine separate Regel machen, weil Sie keinen "mittleren Parameter" haben. Also:
Sie können dann zusätzliche Regeln für URLs festlegen, die zusätzliche Parameter enthalten:
%Vor% Damit können Sie Aktionen für vorhandene Benutzer ausführen. Z.B. /user/1/update
Ein einfacher Weg besteht darin, nur eine Variable an index.php wie folgt zu übergeben
%Vor%und in deiner index.php Datei machst du das
%Vor%das funktioniert in allen Fällen, wenn Sie versuchen, viele Variablen zu übergeben, funktioniert es nicht in der Wase, wenn Sie etwas wie
tun %Vor% Die letzte Variable nimmt immer den Wert add/12/54/54/66
Tags und Links php apache .htaccess mod-rewrite