Site icon 8HOST.COM

Настройка mod_rewrite (часть 2)

Примечание: начало данной статьи можно найти по этой ссылке.

Первые три примера использования модуля rewrite, приведенные в предыдущей части, продемонстрировали, как переписывать URL-адреса, делая их запоминающимися и упрощая доступ к сайту.

Чтобы обеспечить выполнение правила (RewriteRules) только при определенных обстоятельствах, можно задать отдельные условия (Rewrite Conditions, RewriteCond).

Пример 1: защита от хотлинкинга

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

Чтобы защитить сайт от хотлинкинга, можно перенаправить все ссылки на другой объект или изображение или вообще запретить такую операцию.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC] RewriteRule .*\.(gif|jpeg|png)$ http://www.example.com/unpleasantness.jpg [R,NC,L]

Рассмотрим данный блок кода подробнее:

Чтобы просто запретить пользователям доступ ко всем изображениям, внесите небольшую поправку в последнюю строку RewriteRule. Вместо того чтобы указывать альтернативное место назначения (как в примере выше), можно перенаправить ссылку к запрещенной странице:

RewriteRule .*\.(gif|jpeg|png)$ - [F]

Пример 2: как добавить www?

Еще одна полезная функция mod_rewrite – возможность добавить к домену www. Конечно, посетителям сайта понятно, что example.com и www.example.com – это один и тот же сайт; но поисковые системы регистрируют их в качестве дубликатов, что негативно сказывается на рейтинге.

Чтобы решить эту проблему, можно либо последовательно удалить www, либо наоборот – всегда добавлять www к ссылке. Чтобы добавить www, используйте следующий код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]

Рассмотрим данный блок кода подробнее:

После этого все ссылки example.com будут заменены ссылками www.example.com.

Пример 3: блокировка ip-адреса

Это очень удобный способ пресечения доступа к сайту (например, определенных вредоносных IP-адресов).

RewriteCond %{REMOTE_ADDR} ^(12\.34\.56\.789)$
RewriteRule (.*) - [F,L]

Данный код выполняет следующие действия:

Итоги

Первый раздел данной статьи – краткий обзор возможностей модуля mod_rewrite.

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

За дополнительной информацией можно обратиться к следующим ссылкам: