Как я могу создать URL переписать аналогично Wordpress в моем собственном приложении PHP - PullRequest
3 голосов
/ 18 ноября 2011

Я работаю с PHP5.3.6 в Windows 2008R2.

В Wordpress я могу установить все виды дружественных URL-адресов, которые в конечном итоге перенаправляют на одну страницу PHP. Со стороны это выглядит как много страниц, но только одна.

В файле web.config (или .htaccess) есть только одна инструкция, а не одна запись на страницу / статью.

Это означает, что где-то PHP просматривает URL-адрес, сравнивает его с базой данных (там, где существуют заголовки статей) и затем прозрачно перенаправляет на страницу.

Все это прозрачно для конечного пользователя.

Как это сделать на PHP-сайте без поддержки WordPress?

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Я не могу поручиться за WordPress, один из методов, который я использовал, - перенаправить 404 в .htaccess на index.php, а затем выполнить сортировку этого файла путем разбора:

$sub = $_SERVER['SERVER_NAME']; 
$file = $_SERVER['REQUEST_URI'];

$sub может бытьиспользуется для маскировки несуществующих поддоменов в конкретный файл.$file может использоваться в параметре switch или if для включения / перенаправления на основе имени файла.

Очевидно, вам необходимо убедиться, что псевдонимы 'не являются реальными файлами в корне документа.

1 голос
/ 18 ноября 2011

Вот связанный ответ , касающийся того, как это сделать.Вкратце, вы захотите проверить $_SERVER['REQUEST_URI'] и просто проанализировать его.

Вот простой пример анализа запроса (маршрутизаторы MVC обычно настраиваются и могут маршрутизировать и сопоставлять множество различных структур URI):

Если ваш формат похож на news/article-slig, вы можете сделать это (пример кода, есть менее жесткие способы сделать это):

list($section, $slug) = explode('/', trim($_SERVER['REQUEST_URI'], '/'));

На данный момент ваш PHP-скрипт знаеткак интерпретировать запрос.Если бы это было полнофункциональное приложение MVC, маршрутизатор загрузил бы соответствующий контроллер и передал бы ему данные запроса.Если вы просто делаете простой одностраничный скрипт, загружая некоторые данные, то ваши вызовы БД будут следовать.

Если запрос недействителен, то простой вызов header() может уведомить браузер:

header('HTTP/1.0 404 Not Found');

И любой вывод данных будет содержимым вашей страницы 404.

0 голосов
/ 18 ноября 2011

Это называется маршрутизацией (вы также можете проверить информацию о шаблоне Front Controller).Вы можете написать свою собственную реализацию, перенаправив все ваши запросы в один файл с помощью настроек сервера и проанализировав запрос в этом файле.Вы также можете проверить, например, документы и источники Zend_Controller_Router, чтобы понять, как это работает.

http://framework.zend.com/manual/en/zend.controller.router.html

http://framework.zend.com/manual/en/zend.controller.html

...