Вопрос по url-routing, standards, php, frameworks – Как реализовать маршрутизацию URL в PHP

7

Как реализовать маршрутизацию URL в PHP.

Возможный дубликат:stackoverflow.com/questions/125677/php-application-url-routing, Попробуйте посмотреть на этот вопрос. Macha
Либо ониработаем вместе или этоКукольный счет носка. random
На самом деле возможна тройка =) Zed
смотреть этот урокyoutube.com/watch?v=byjMGftJeyU jasinth premkumar

Ваш Ответ

2   ответа
16

вы можете выполнить маршрутизацию URL через mod_rewrite.

Небольшой пример:

RewriteEngine On
RewriteRule ^(dir1)/?(path2)? main.php?dir=$1&path=$2

Тот'будет любой запрос, как

http://yoursite.com/dir1/path1 

обслуживается

http://yoursite.com/main.php?dir=dir1&path=path2

Больше примеровВот.

Другая альтернатива - перенаправление каждого запроса в один файл php.

RewriteEngine On
RewriteRule (.*) main.php?request=$1

а затем сделать это в коде, где вы можете использоватьаналогичный подходс помощью набора регулярных выражений, которые соответствуют некоторому коду и затем перенаправляются через header () или просто внутренне.

11

(Я полагаю, ваш веб-сервер Apache) mod_rewrite быть включенным.



Затем вам нужно создать RewriteRule, чтобы перенаправить все на вашу страницу index.php.

Нечто подобное может сделать:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php 

Он будет перенаправлять каждый запрос в файл, который неt существует для index.php; это означает, что если запрошенный URL-адрес www.example.com/blah, то на самом деле будет вызван index.php.

О том, вот пара ссылок, которые могут помочь:

Руководство по перезаписи URLmod_rewrite: начинающийРуководство по перезаписи URL



Затем эта страница должна определить, что должно отображаться, в зависимости от того, какой исходный URL был вызван - или какие параметры получены.

Это можно сделать с помощьюДизайн шаблона Передний контроллернапример - этоНапример, он реализован в большинстве современных фреймворков PHP.



На SO было много вопросов по этой теме; некоторые из них (и их ответы) могут вам помочь. Например :

Как мне переписать URL в php?URL-сопоставление в PHP?PHP Application URL Routing
Это должно быть стандартным ответом на этот вопрос. Он работает для любого серверного языка, работающего на Apache, и куча правил переписывания в любом случае не особенно устойчива. WCWedin

Похожие вопросы