Примеры использования mod_rewrite

Подробное описание модуля mod_rewrite можно найти здесь

Доп ссылки:

http://www.htmlweb.ru/php/htaccess.php

http://www.ter-net.ru/hosting/faq/htacces.html

Посетители веб-сайта авторизуются при помощи стандартной авторизации (AuthType BasicAuth). Необходимо по ссылке /home/первая буква логина/ показывать содержимое их домашних каталогов.
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
<span class="STRING">RewriteCond</span> %{REMOTE _ USER} != &quot;&quot;
<span class="STRING">RewriteCond</span> /home/(.)/(%{REMOTE_USER}) -d
<span class="STRING">RewriteRule</span> (.*) /home/%2/$1

 

Жесткий запрет посещений нашего веб-сайта для робота поисковой системы Google
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteCond</span> %{USER_AGENT} Googlebot
<span class="STRING">RewriteRule</span> .* - [F]
 
<span class="COMMENT"># Другой вариант возвращает вместо ошибки 403 ( FORBIDDEN ) ошибку 404 ( NOT _ FOUND ) </span>
<span class="STRING">RewriteCond</span> %{USER_AGENT} Googlebot
<span class="STRING">RewriteRule</span> .* - [R=404]

 

Закрыть доступ к веб-сайту в рабочее время
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteCond</span> %{TIME_HOUR}%{TIME_MIN} &gt; 900
<span class="STRING">RewriteCond</span> %{TIME_HOUR}%{TIME_MIN} &lt; 1800
<span class="STRING">RewriteRule</span> .* - [ F ] 

 

Если на вашем сайте есть очень ценные картинки или архивы и вы не хотите чтобы кто-то размещал их (если архивы, то ссылки на них) на своих страницах, создавая таким образом бесполезный трафик для вашего сайта, вы можете запретить скачивание ресурсов, проверяя поле заголовка HTTP_REFERER. для каталога:
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /img/
<span class="STRING">RewriteCond</span> %{HTTP_REFERER} !^$
<span class="STRING">RewriteRule</span> .* - [ F ] 

 

и для определенных типов файлов
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /img/
<span class="STRING">RewriteCond</span> %{HTTP_REFERER} !^$
<span class="STRING">RewriteRule</span> \.(jpe?g|gif|png|css|swf)$ - [ F ] 

 

В связи с неоднозначностью записи расширения HTML файлов (.htm или .html), некоторые пользователи могут ошибочно набрать адрес страницы. Для автоматического исправления такого рода ошибок, можно воспользоваться mod_rewrite.
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /
<span class="STRING">RewriteRule</span> ^(.*)\.htm$  $1.html [R=permanent] 

 

Необходимо запрос любой страницы сайта отправлять на одну (будет написано что сайт временно ен доступен), но в то же время нужно оставить его открытым для поисковых машин. То есть для клиентов сайт закрыт, а для индексации - открыт.
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^gaisbot.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^aport.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
<span class="STRING">RewriteCond</span> %{HTTP_USER_AGENT} !^crawler.* [NC,OR]
<span class="STRING">RewriteRule</span> ^/$ - [L,R] 

 

Перенаправление несуществующих URL на другой веб-сервер
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /
<span class="STRING">RewriteCond</span> /your/docroot/%{REQUEST_FILENAME} !-f
<span class="STRING">RewriteRule</span> ^(.+) http://webserverB.dom/$1  

 

Проблема здесь в том, что это будет работать только для страниц находяшихся внутри DocumentRoot. Тогда как вы можете добавить больше условий (например ещё и для управления домашними каталогами, и т.д.) есть лучший вариант:
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteBase  </span> /
<span class="STRING">RewriteCond</span> /your/docroot/%{REQUEST_FILENAME} !-U
<span class="STRING">RewriteRule</span> ^(.+) http://webserverB.dom/$1  

 

Сайт перенесен с одного домена на другой с domain.com на domain2.com
 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteCond</span> %{HTTP_HOST} ^www\.domain\.com$ [R=301,1]
<span class="STRING">RewriteRule</span> ^(.*)$ http://www.domain2.com/$1

 

Часто хостинговые провайдеры накладывают ограничение на количество уикальных сайтов, и зачастую под это ограничение попадают и поддомены. Данное ограничение можно обойти средствами .htaccess. Например мы хотим направить поддомен forum.yourdomain.net на директорию ~/forum для этого необходимо направить нужные поддомены на папку с остновным сайтом и создать вложенную директорию например forum

 

<span class="STRING">RewriteEngine</span> <span class="KEYWORD">on</span>
 
<span class="STRING">RewriteCond</span> %{HTTP_HOST} ^forum\.yuordomain\.net$ [NC]
<span class="STRING">RewriteCond</span> %{REQUEST_URI} !^/forum/$ [NC]
<span class="STRING">RewriteRule</span> (.*) /forum/$1 [L]