О mod_rewrite в примерах



Наиболее распространенные примеры применения модуля mod_rewrite, что этот модуль собой являет. Обычно этот модуль используют для превращения динамического URL с параметрами в статический с именем файла.

* mod_rewrite - программный модуль веб-сервера Apache.
* Этот модуль позволяет по специальным правилам «переписывать» URL страницы «на лету», URL будет разбит на части, проанализированный и переделанный в другой URL перед выполнением запроса.
* Некоторые директивы данного модуля могут использоваться лишь в конфигурационном файле самого веб-сервер, другие же - в специальных файлах «.htaccess», которые можно располагать в подкаталогах иерархии вашего сайта. Именно эти директивы из файла «.htaccess» и делают основную работу по превращению HTTP-линков.
* Для работы этого модуля Вы должны создать и загрузить файл под названием «.htaccess» в папку сервера, с которой вы будете работать (или, если у вас есть доступ, то можете работать с файлом «httpd.conf»).

Как отмечают опытные программисты, нужно быть очень осторожным при работе с этим модулем. Некоторые ошибки, какие Вы способны допустить, могут привести к логической петле, которая приведет к непрерывной 100%-й загрузке центрального процессора.

Несколько стандартных переменных (переменные записываются в виде %{ ІМЯ_ПЕРЕМЕННОЙ}), которые используются в примерах:

* REQUEST_URI - строка запроса без имени хоста и параметров запроса;
* QUERY_STRING - параметры запроса;
* REMOTE_ADDR - IP-адрес пользователя;
* REMOTE_HOST - имя хоста посетителя;
* HTTP_USER_AGENT - содержание HTTP-заголовка User-Agent;
* HTTP_REFERER - содержание HTTP-заголовка Referer;
* HTTP_HOST - имя хоста веб-сайта;
* REQUEST_FILENAME - имя файла из REQUEST_URI;
* Все переменные TIME_* хранят разбитые на части текущую дату и время.

Как позволить выкачивать рисунки из текущего сайта и запретить выкачивание через чужие ссылки?

RewriteEngine On
RewriteCond %{REQUEST_URI} /img/
RewriteCond %{HTTP_REFERER} !^.*somedomain\.ua.* [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .* /empty.png [L]

Как организовать редирект (англ. «redirect») на другую страницу?

RewriteCond %{HTTP_HOST} ^www.domain1.ua$ [NC]
RewriteRule (.*) http://www.domain2.ua/$1 [RL]

Как перебрасывать пользователя из www.mysite.com на mysite.com, то есть по адресу без www?

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.
RewriteRule ^(http://www.)(.*)$ http://$2 [L]

Как защитить от несанкционированного доступа файл «.htaccess». Если кто-то пытается получить доступ к файлу «.htaccess», выдается ошибка, которая сообщает, что доступ к файлу запрещен.

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]

Как запретить роботу спама под вымышленным названием «EmailFinder» (имеется в виду имя User-Agent’а) ходить по сайту:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^EmailFinder
RewriteRule ^.*$ - [F]

Как заблокировать паука, который пришел из сайта www.site.com.ua:

RewriteCond %{REMOTE_HOST} ^www.site.com.ua$
RewriteRule ^.*$ - [F]

Если нужно заблокировать определенный IP-адрес, то условие будет выглядеть так:

RewriteCond %{REMOTE_ADDR} ^196.36.61.11$
RewriteRule ^.*$ - [F]

«Перепишем» URL страницы «на лету», то есть сделаем так, чтобы к странице на сайте mysite.com.ua можно было доступиться не только по адресу

http://www.mysite.com.ua/cgi-bin/shop.cgi?product_id

но и по более привлекательному и удобному для человеческого глаза:

http://www.mysite.com.ua/shop/product_id

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)shop/(.*)$ $1cgi-bin/shop.cgi?$2

Вот так можно закрыть доступ к веб-сайту в рабочее время (с 10:00 до 19:00):

RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule .* - [F]

Google
 



© Copyright 2008-2017 - Создание сайта : intersite.net.ua - All Rights Reserved

Не нашли ответ на свой вопрос? Попробуйте задать его службе поддержки: https://uahosting.com.ua/contacts.php