8 mod_rewrite правил которые надо знать
Красивые адреса страниц, так называемые ЧПУ – это не только стильно, но это еще и интуитивно понятная «фича» вашего сайта. Как сделать Человеко понятные url я уже писал. Теперь немного расскажу о самом синтаксисе файла .htaccess.
Правила которыми мы пользуемся для создания красивых урлов не замысловатые и их немного, но думаю повторить стоит.
Включаем mod_rewrite.
RewriteEngine on
Базовый синтаксис для mod_rewrite выглядит так.
RewriteRule УСЛОВИЕ РЕШЕНИЕ [Flag(s)]
Перенаправление на другую страницу. Для использования перенаправления со статусом 301 используем следующую конструкцию.
RewriteRule ^fileone.html$ filetwo.html
Адреса страниц без “www”. Тут вопрос спорный нужно или нет – лично я сторонник интернета без www, но работая с заказчиками из США увидел, что у них это как обязательное требование, но вот правило как работать без.
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Запрет определенного IP и перенаправление на страницу с соответствующим сообщением:
RewriteCond %{REMOTE_ADDR} ^(A\.B\.C\.D)$
RewriteRule ^/* http://www.domain.com/sorry.html [L]
Обратите внимание, что перед точками стоят слеши – они обязательны.
Блокирование пользователя по UserAgent. Если при атаке на ваш сайт «бот» использует разные IP, то вышеописанный способ не подойдет – пробуем заблокировать по UserAgent.
RewriteCond %{HTTP_USER_AGENT} UserAgent
RewriteRule .* - [F,L]
Также вы можете указать несколько агентов, доступ которых на сайт вы желаете перекрыть:
RewriteCond %{HTTP_USER_AGENT} UserAgentA [OR]
RewriteCond %{HTTP_USER_AGENT} UserAgentB
Избавляемся от нежелательной строки запроса. Допустим, у вас сделано так, что к домашней странице не может идти никаких запросов, но кто-то, или вы сами понаставляли ссылок с параметром, например, добавив в url вашей главной страницы ненужный параметр ?p=1. Для вас, как для пользователя, эта страница идентична той, что и без параметра, а вот у поисковика другой взгляд. По спецификации это другая страница. Избавляемся от этого так:
RewriteCond %{QUERY_STRING} p=
RewriteRule (.*) http://www.domain.com/$1? [R=301]
Устанавливаем картинку по умолчанию. На случай если картинка где-то потерялась и не может быть отображена, из-за чего может поехать дизайн, отображаем какую-нибудь другую, например с эмблемой любимого футбольного клуба
. Здесь принято за папку с картинками – images, можете поставить свою.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]
Предотвращаем горячие «ссылки». Некоторые хитрецы умудряются вставлять на свой сайт картинки, которые лежат у вас на сервере. Мне как-бы не жалко, но делать так некрасиво, поэтому показываем хитрому веб-мастеру что-нибудь отбивающее желание тырить у нас картинки, например порно-картинки или просто огромный пролетарский кукиш.
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/ .*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /kukish.jpg [R=302,L]
Отображение страниц при проведении технических работ. Возможно, у вас сложится ситуация, когда нужно будет провести с сайтом определенные технические работы: откатить старый дамп базы, обновить структуру, сменить проект целиком. Для того, чтобы пользователи не видели промежуточных результатов, а это может быть не только некрасиво но и небезопасно, следует в .htaccess добавить такую инструкцию.
RedirectMatch 302 ^/ /maintenancepage.html
О чем стоит помнить еще:
- Команды mod_rewrite чувствительны к регистру
- Файл с командами должен быть в unix-кодировке. Для редактирования и создания файлов .htaccess отлично подходит Notepad++
Постовые:
При входе в любое приличное заведение приходится сталкиваться с таким прибором, как металлоискатели – они делают нашу жизнь безопасней.

