FAQ по файлу .htaccess

Несколько примеров директив, которые Вы можете использовать в файле .htaccess для более полной и точной настройки веб-сервера Apache. 

DirectoryIndex index.php # Устанавливает файл для директории, который грузится по умолчанию. Возможно указание нескольких имен через пробел, тогда сервер будет просматривать список слева направо и выдаст по умолчанию первый существующий файл. В случае, если ни одного из файлов, заданных директивой DirectoryIndex, не найдено в текущем каталоге, то web-сервер выдает 403-ю ошибку.
DirectoryIndex index.php index.shtml index.html

ErrorDocument 404 /index.html # Файл, который сервер выдает в случае, если произошла ошибка с указанным номером. Путь к файлу указывается от корневой директории сайта. Номера некоторых ошибок: 404 - файл не найден; 500 - ошибка скрипта; 403 - доступ запрещен.

CharsetRecodeMultipartForms Off # Директива выключает перекодировку передаваемых на сервер данных. Используется в тех случаях, когда скрипт производит загрузку на сервер каких-либо файлов, например картинок. Важно чтобы файл .htaccess лежал в той же директории, что и скрипт с формой закачки, либо находился выше его уровнем.

Запрет доступа с помощью .htaccess При желании можем дать 
deny from all # Запрет на все файлы. Никто ничего не увидит, но скриптам, работающим на стороне сервера файлы все равно будут доступны.

Order Allow,Deny
deny from all
allow from 192.168.8.1 # Всем, кроме посетителя с IP 192.168.8.1 доступ запрещен.

Order Deny,Allow
Deny from all
Allow from .test.com # Только для .test.com будет доступен ваш сайт

Redirect / http://www.test.com # Все посетители (редирект) будут перенаправлены на http://www.test.com

Перенаправление посетителей при запросе определенных страниц/ например, для любителей поиска дыр в защите. Добавляем в .htaccess:
redirect /scripts http://www.microsoft.com
redirect /_vti_bin http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1
Любой запрос с адресом /_vti_bin или /scripts будет автоматически перенаправляться на сайт Microsoft.

Редирект посетителей в зависимости от реффера (ссылающейся страницы):
RewriteCond %{HTTP_REFERER} http://www.xakers.ru
RewriteRule ^/hack.html$ /von.html [L]
В данном случае все с форума /www.xakers.ru вместо файла hack.html получат файлик von.html

Ставим запрет на отображение содержимого директории при отсутствии индексного файла:
Options -Indexes
Чтобы, наоборот, разрешить веб-серверу отображать содержимое директории при отсутствии индексного файла, надо добавить инструкцию:
Options +Indexes

Поставить пароль на директорию. Доступ к директории извне контролируется файлами .htaccess и .htpasswd.

Домен Вы в любом случае должны присвоить сайту siteN. А затем уже с помощью mod_rewrite можете перенаправлять обращения к нему в какой-либо подкаталог этого сайта. Например, все обращения к субдоменам, вида *.domen.com чтоб вели на основную зону в папку в корне, и обращаться к ней как к субдомену. Т.е создаем папку domen.com/news/  А ссылаемся на нее везде как http://news.domen.com/

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^subdomen1.mydomain.*
RewriteCond %{REQUEST_URI} !/subdomen1/
RewriteRule ^(.*)$ /subdomen1/$1

В описаном варианте, каждую папку мы прописываем отдельно в htaccess . А для удобства можно один раз прописать, что все обращения к субдоменам транслировать как обращения к папкам

 

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^.*\.energodar.net$
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.energodar.net(.*) /$1$2

 

Тоже самое, но только папка с поддоменами называется sites

 

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.*)\.energodar.net$
RewriteCond %{REQUEST_URI} !^/sites
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.energodar.net(.*) /sites/$1/$2

 

Еще вариант, при котором сайт видится ещё и через dom2.dom1/sub/

 

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^sub\.dom2\.dom1$
RewriteCond %{REQUEST_URI} !^/sub/.*$
RewriteRule ^(.*)$ /sub/$1