PHP. ЧПУ для сайта

phpМногие наверняка хотят видеть ссылки на своем сайте в виде лаконичных окончаний, а не наборов символов. Для этих целей используется технолгоия ЧПУ(Человекопонятный УРЛ).

Например, ссылка на сайт site.ru/index.php?page=news представленная в некрасивом виде с использованием ЧПУ может выглядеть так: site.ru/news. На самом деле ничто вам не мешает создать папку news на сервере и положить туда индексный файл, но при наличи 100 или более таких папок управление сайтом будет неудобным.

Чтобы не создавать кучу папок можно, так сказать, обмануть сервер. Т.е. при запросе несуществующей папки каким-либо способом обрабатывать запрос клиента и выдавать ему информацию из некой базы по переданным параметрам.

Существуют несколько способов приспособить ЧПУ для своего сайта. Разберем один из популярных методов.
Суть метода:
При запросе к серверу раз страница не существует, то она выдаст ошибку 404. Поэтому нужно в файле .htaccess прописать страницу, которая будет загружаться при 404 ошибке, а потом эта страница будет обрабатывать переданный ей и выдавать необходимый документ.
В .htaccess прописываем:
ErrorDocument 404 /index.php
ErrorDocument 401 /index.php
Пользователь набирает http://site.ru/news, такая страница не найдена, и загружается файл index.php. Дальше — все просто. Переменная $REQUEST_URI дает нам адрес вызываемой страницы (в данном случае это будет /news), вывести на экран соответствующий документ — дело техники.
В некоторых браузерах и с поисковиками такой фокус не пройдет: страница 404 будет выдавать соответствующий код, и страницы индексироваться не будут. Поэтому надо, чтобы страница, которая грузится в случае ошибки 404, изменяла бы код ошибки и сигналила,что есть такая страница. Для этого пропишем
Плюсы: Очень простой способ. Работает почти везде.
Минусы: При таком способе нельзя постить содержимое формы на несуществующие псевдоурлы. И если в Апаче ведется лог 404-ых ошибок, то он будет забит.

При разработке статьи частично использовани материалы http://spectator.ru/technology/php/user_friendly_urls

Оставить ответ

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