Сделать чистые URL-адреса и получить строку запроса - PullRequest
0 голосов
/ 06 декабря 2011

Есть ли способ добавить относительные URL-адреса в коде php, например /forums/(forumID)/, в теги при настройке моего сайта? Затем, когда я пытаюсь узнать, каким forumID является текущая страница, получить ее с помощью $_GET запроса без использования системы шаблонов, такой как Smarty, CakePHP и т. Д. Или модуля перезаписи Apache? Или это огромная головная боль? Я просто хочу иметь возможность не быть привязанным к одному типу веб-сервера (Apache).

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

Очистить URL довольно просто, но если веб-страницы сильно отличаются, это может вызвать некоторые проблемы.

Вам нужно отредактировать ваш файл .htaccess и добавить что-то похожее на это

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
#This will process http://example.com/forum as http://example.com/index.php?page=forum

RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1
#This includes the trailing slash

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?page=$1&id=$2
#This will process http://example.com/forum/512 as http://example.com/index.php?page=forum&id=512

Это хороший источник для получения дополнительной информации http://www.desiquintans.com/cleanurls

2 голосов
/ 06 декабря 2011

... продолжено из комментариев OP.

Эти платформы снова читают запрос на соответствующих языках, чтобы платформа могла маршрутизироваться на определенные контроллеры, но им все еще требуется настройка веб-сервера для отправки запроса в среду в первую очередь.

  • Клиентские запросы http://example.com/forums/123
  • После поиска DNS запрос попадает на сервер с 127.0.0.1:80
  • Веб-сервер (например, Apache) прослушивает порт 80 и принимает запрос
  • Apache направляет запрос на серверный скрипт

Это путешествие, каким его видит веб-сервер. Он должен прочитать запрос до того, как он достигнет языка сценариев на стороне сервера (PHP / Python / Ruby и т. Д.).

Языки на стороне сервера могут затем перечитать URL, как только веб-сервер нажмет на фронт-контроллер, как им будет угодно.

1 голос
/ 06 декабря 2011

Основные причины иметь чистые URL с точки зрения архитектуры:

  • Они не привязаны к какому-либо языку программирования. Если у вас есть.php или любых других расширений, вам нужно настроить сервер на прием расширений .php для других языков, если вы переключитесь на ASP.net.
  • Их легко маршрутизировать влюбой язык или настройка сервера. На всех известных мне современных серверах есть модули для маршрутизации URL.

Обратите внимание, что для использования языка программирования для маршрутизации URL-адресов вам все равно необходимо настроить сервер.направить все в файл начальной загрузки.Честно говоря, вы не обращаетесь к каким-либо конфигурациям серверов.

Вывод: ваша логика для того, чтобы ваш проект был настроен таким образом, не будет работать без некоторого сервераустановка.

...