Как реализовать маршрутизацию URL в PHP - PullRequest
7 голосов
/ 22 августа 2009

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

Ответы [ 2 ]

16 голосов
/ 22 августа 2009

Если вы используете Apache, вы можете выполнять маршрутизацию 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 голосов
/ 22 августа 2009

Прежде всего, вам понадобится Apache (я полагаю, ваш веб-сервер Apache) mod_rewrite для включения.


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

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

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

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


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

Это можно сделать, например, с помощью Front Pattern Controller , например, он реализован в большинстве современных фреймворков PHP, например.


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...