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.

Как бороться с багами? Часть десятая: не утонуть в багах и глюках Как организовать процесс сдачи задачи и код-ревью в рамках спринта? Типовые решения в вёрстке. Как форматировать ХТМЛ 9 Что нужно, чтобы сайт на Айфоне выглядел также как на Андроиде, а не в два раза меньше? 1




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

Инструкция к сайту бюро, единственный способ запоминать изученное, расчёт стоимости проекта 1 Как придумать название для сервиса, который станет знаменитым? 2 Что лучше использовать: спинер или прогрессбар? 5 Как правильно защитить свою позицию перед заказчиком, который боится «потерять» клиентов 5