.htaccess - шпаргалка

1. Общая информация

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

Включение обработки файла .htaccess осуществляется в разделе «Веб-сервер» — «Сайты» — «Имя сайта» - окно «Управление»  панели управления хостингом (https://hosting.nic.ru).

СКРИНШОТ

2. Примеры использования файла .htaccess

2.1 Постоянное перенаправление с кодом 301

Если Вы временно перенесли, либо изменили название страницы сайта, добасьте следующие строки:

Redirect 301 /page.html http://www.site.tld/new_page.html

где:
page.html - название старой страницы
site.tld - имя сайта
new_page.html - название новой страницы

2.2 Временное перенаправление с кодом 302

Если страница перенесена временно, сообщить об этом посетителям можно добавив строки:

Redirect /page.html http://www.site.tld/new_page.html

где:
page.html - название старой страницы
site.tld - имя сайта
new_page.html - название новой страницы

2.3 Переопределение страниц ошибок

При помощи файла .htaccess Вы можете установить свои страницы ошибок:

#401  Авторизация не выполнена
ErrorDocument 401 http://site.tld/401.html
#403  Доступ запрещен
ErrorDocument 403 http://site.tld/403.html
#404  Страница не найдена
ErrorDocument 404 http://site.tld/404.html
#500  Внутренняя ошибка сервера
ErrorDocument 500 http://site.tld/500.html

Не забудьте заменить site.tld на название Вашего сайта и создать страницы 401.html,403.html 404.html, 500.html в папке с сайтом.

2.4 Постраничное перенаправление всех страниц на другой сайт

Добавьте данный код в файл .htaccess если необходимо перенаправить все запросы к Вашему сайту к аналогичным страницам другого сайта.

Redirect 301 /  http://www.site.tld/

либо

RewriteEngine on
RewriteRule ^(.*)$ http://newsite.tld/$1 [R=301,L]

Обратите внимание, что в данном случае адресация будет постраничная: 

при запросе "http://Ваш_сайт.рф/главная" будет происходить переадресация на http://www.site.tld/главная 

2.5 Ограничение доступа к сайту по IP

Запретить доступ к сайту с IP адресов 123.4.5.6 и 123.5.4.3

Order Allow,Deny
Allow from all
Deny from local.
Deny from 123.4.5.6, 123.5.4.3

Разрешить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:

Order Deny,Allow
Deny from all
Allow from local.
Allow from 123.4.5.6, 123.5.4.3

Запретить доступ к сайту для всех:

Order Deny,Allow
Deny from all

2.6 Переопределение первой страницы сайта

Сделать первой страницей файл menu.html

DirectoryIndex menu.html

2.7 Включение обработки PHP в .html файлах

Включить обработку php кода в html файлах:

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

2.8 Перенаправление доменов www на без www

Перенаправить домен www.mysite.tld на mysite.tld:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysite.tld [NC]
RewriteRule ^(.*)$ http://mysite.tld/$1 [R=301,L]

Перенаправить домен mysite.tld на www.mysite.tld:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.tld [NC]
RewriteRule ^(.*)$ http://www.mysite.tld/$1 [R=301,L]

2.9 Запрет выдачи листинга каталога

В случае отсутствия в папке индексного файла, при обращении будет выдан список файлов каталога. Для того, что бы запретить выдачу листинга каталога добавьте в файл .htaccess строку:

Options -Indexes

2.10 Исполнение CGI-скриптов в папке docs

В папке c файлами CGI-скриптов необходимо разместить файл .htaccess с содержимым:

AddHandler cgi-script .cgi .pl
Options +ExecCGI

Скрипт должен иметь атрибут исполнения (+x, права доступа 755).
Атрибуты можно изменить с помощью файлового менеджера панели управления.

Также в разделе «Веб-сервер» - «управление модулями» должен быть включен модуль CGI.

2.11 Блокировка переходов со сторонних ресурсов

Для запрета перхода c badsite.tld на site.tld добавьте в .htaccess следующее:

RewriteEngine on
RewriteCond %{HTTP_REFERER} badsite\.tld [NC,OR]
RewriteCond %{HTTP_REFERER} site\.tld
RewriteRule .* - [F]

2.12 Отдача заголовка Last-modified для .htm .html файлов

По-умолчанию файлы .html .htm обрабатываются как SSI, а значит для отдачи заголовка Last-modified в файл .htaccess нужно добавить строку: 

RemoveHandler .html. .htm

При этом файлы .html .htm уже не будут обрабатываться на SSI

2.13 Как прописывать правила для для кириллических доменов в зонах .РФ .МОСКВА и других

В файле .htaccess использование кириллицы не допускается. Для составления правил перенаправлений для киррилических доменов предварительно перекодируйте имя домена в пуникод. Сделать это можно введя имя домена в форму на странице https://www.nic.ru/whois/

К примеру, перенаправить site.ru на caйт.рф нужно следующим правилом:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysite.ru [NC]
RewriteRule ^(.*)$ http://XN--80ASWG.XN--P1AI/$1 [R=301,L]
2.14 Обработка html файлов интерпретатором РНР

Если html файл содержит php код, то для его исполнения нужно добавить в файл .htaccess следующие строки:

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

Директива RemoveHandler удаляет любые обработчики ассоциации файлов с расширениями .html .htm

Директива AddType присваивает тип контента выбранным расширениям. В данном случае файлы .php .htm .html .phtml будут обрабатываться как php файлы.

 

Дополнительная документация и примеры

С дополнительной документацией и примерами использования Вы можете ознакомиться на страницах сайта разработчика веб-сервера Apache:

http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect