Jak zaimplementować routing adresów URL w PHP.Jak wdrożyć routing adresów URL w PHP
Odpowiedz
Jeśli używasz Apache można zrobić routing URL za pośrednictwem mod_rewrite.
Mały przykład:
RewriteEngine On
RewriteRule ^(dir1)/?(path2)? main.php?dir=$1&path=$2
To będzie jakieś życzenie jak
http://yoursite.com/dir1/path1
obsługiwanym przez
http://yoursite.com/main.php?dir=dir1&path=path2
Więcej przykładów here.
Druga alternatywa mieć każde żądanie przekierować do pojedynczego pliku php
RewriteEngine On
RewriteRule (.*) main.php?request=$1
a następnie zrobić to w kodzie, gdzie można wykorzystać do similar approach, poprzez zestaw wyrażeń regularnych, które są dopasowane przez niektóre kod, a następnie przekierowany przez header() lub tylko wewnętrznie.
Przede wszystkim będziesz potrzebować Apache's (Przypuszczam, że twój serwer WWW to Apache)mod_rewrite
, aby być włączony.
Następnie należy utworzyć RewriteRule, aby przekierować wszystko na swoją stronę index.php.
Coś takiego może zrobić:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
To przekieruje każde żądanie do pliku, który nie istnieje na index.php; oznacza to, że jeśli żądany adres URL to www.example.com/blah, to w rzeczywistości będzie to wywołanie index.php.
O tym, oto kilka z linku, który może pomóc:
Następnie, ta strona musi określić, co ma być wyświetlane w zależności od jaki początkowy URL został wywołany - lub jakie parametry są odbierane.
Można to zrobić na przykład za pomocą Design Pattern Front Controller - jest on zaimplementowany w większości nowoczesnych frameworków PHP.
Na ten temat było wiele pytań dotyczących tego tematu; niektóre z nich (i ich odpowiedzi) prawdopodobnie mogą ci pomóc. Na przykład:
Powinna to być standardowa odpowiedź na to pytanie. Działa na każdym języku po stronie serwera działającym na Apache, a stosy reguł przepisywania nie są tak trwałe. – WCWedin
http: // stackoverflow.com/questions/1316021/how-to-use-url-routing-in-php – cherouvim
Możliwy duplikat: http://stackoverflow.com/questions/125677/php-application-url-routing. Spróbuj spojrzeć na to pytanie. – Macha
W rzeczywistości, możliwe trzy egzemplarze =) – Zed