Я знаю, что среда PHP Symfony позволяет вам это делать.
Как это работает: В конфигурации apache используйте mod_rewrite, чтобы перенаправить ВСЕ входящие запросы в одну точку входа (в Symfony это называется"front controller")
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
В этом front controller вы собираетесь создать объект "Request", который содержит всю информацию, предоставленную URL.
Например, вы можете сказать, чтопервая вещь после "/" - это имя файла PHP для вызова, а все остальное - это параметры и значения, так что http://example.com/file/id/2 вызовет file.php с id = 2
.что, просто используйте некоторый reg exp и тщательно спроектируйте свой класс «Request».Для приведенного выше примера класс «Запрос» должен предоставлять методы getRequestedAction () и getParameter (строковый параметр).Метод getRequestedAction () будет использоваться, когда объект «Запрос» заполнен полностью, чтобы вызвать правильный файл / действие / метод.
, если вы решите заполнить массив параметров объекта запроса обоимиexp на URL и разбор массива _GET, вы можете добраться до точки, где: http://example.com/file/id/2 совпадает с http://example.com/file?id=2 (и оба могут работать)
вы можетевыберите игнорирование расширений (http://example.com/file.html совпадает с http://example.com/file), или нет.
Наконец, для некоторых URL вы можете просто игнорировать все, что идет после последнего символа '/'.что: http://example.com/question/3/where-is-khadafi совпадает с http://example.com/question/3/is-linux-better-than-windows
В другом файле file.php просто используйте $ request-> getParameter ('id'), чтобы получить значение параметра "id"вместо использования массивов _GET или _POST.
Весь смысл в том, чтобы
- Перенаправить весь входящий трафик на один «фронт-контроллер»
- В этом файлесоздайте объект «Запрос», который содержит всю информацию, необходимую для запуска сайтаe
- Вызовите правильное действие (файл php) на основе информации, содержащейся в этом объекте «Запрос»
- Внутри действий используйте этот объект запроса для извлечения параметров, содержащихся в URL
Надеюсь, это поможет