x
 
Станислав Биченко
4 октября 2012

Как пользоваться mod_rewrite, чтобы получались красивые урлы? (Дополнительный вопрос: как сделать так, чтобы при этом не ломались все относительные ссылки?)



Станислав!

Самый крутой способ сделать красивые урлы, который мне известен — это полностью виртуализировать структуру сайта. В этом случае нужно перенаправлять любой запрос к серверу (если это не файл и не папка) в скрипт роутера. Для этого добавим соотвествующие правила в корневой .htaccess.

RewriteEngine On

RewriteRule ^$ /router.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ /router.php [L,QSA]

После этого все запросы, которые ведут на несуществующие файлы и папки будут попадать в router.php, где их можно будет получить из $_SERVER[‘REQUEST_URI’]. Картинки, яваскрипты, файлы шрифтов и стилей будут отдаваться веб-сервером напрямую, минуя роутер.

Неоспоримым плюсом данного метода является то, что проект будет практически платформонезависимым. С минимумом усилий его можно поднять не только на «Апаче», но и «Лайти» и «Нгинксе», настроив один редирект. И при этом совершенно не важно, как внутри устроен ваш сайт и где физически лежат файлы.

Относительные ссылки при этом никак не сломаются, так как REQUEST_URI на сервер всегда попадает абсолютным.


Поделиться
Отправить

Цель рубрики — обсуждение вопросов дизайна всех видов, текста в дизайне и взаимоотношений дизайнеров с клиентами.

Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры. Мы ожидаем, что такие комментарии составят около 20% от общего числа.

Решение о публикации принимается один раз; мы не имеем возможности комментировать или пересматривать свое решение, хотя оно может быть ошибочно. Уже опубликованные комментарии могут быть удалены через некоторое время, если без них обсуждение не становится менее ценным или интересным.

Вот такой веб 2.0.

Какой движок выбрать для сайта рекламного агентства? 2 Чеклист публикации сайта 2 Как объяснять разработчикам архитектуру проекта? Как улучшить сообщение о баге для разработчиков?




Недавно всплыло

3 Правдивость 4 Как сделать, чтобы публикация выделялась в ленте: композиция, исправление дефектов, цвет 1 1