Поиск по разделу помощи:
Расширенный поиск
Главная / Популярные вопросы / Хостинг

Файл .htaccess – настройка перенаправлений и конфигурации веб-сервера


  1. Общая информация
  2. Примеры использования файла .htaccess
    1. Перенаправление синонима сайта на основной адрес
    2. Перенаправление с кодом 301
    3. Постраничное перенаправление запросов на другой домен
    4. Настройка страниц ошибок
    5. Ограничение доступа к сайту по IP-адресу
    6. Настройка главной страницы сайта
    7. Настройка кодировки по умолчанию
    8. Запрет выдачи листинга каталога
    9. Разрешение перехода по символическим ссылкам
    10. Включение поддержки технологии SSI
    11. Блокировка переходов со сторонних ресурсов
  3. Диагностика ошибок
  4. Дополнительная документация

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

.htaccess - конфигурационный файл, позволяющий управлять работой веб-сервера Apache и настройками сайта.

На файл необходимо устанавливать права доступа 644, для того чтобы веб-сервер смог его прочитать.

Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если необходимо с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта.

Будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должны присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.

Внимание! Использование кириллицы в файлах .htaccess не допускается. Имена кириллических доменов следует вводить в пуникоде.

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

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

Перенаправление запросов с любого из синонимов сайта на example.com:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Перенаправление запросов с любого из синонимов сайта на www.example.com:

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

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

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

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

Redirect 301 /page.html http://www.example.com/new_page.html

где:
page.html – адрес старой страницы относительно корня сайта;
www.example.com – имя сайта;
new_page.html – адрес страницы, на которую нужно выполнить перенаправление.

2.3 Постраничное перенаправление запросов на другой домен c кодом 301

Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://example.com/main будет переадресован на http://new.example.com/main:

Redirect 301 / http://new.example.com/

либо

RewriteEngine On
RewriteRule ^(.*)$ http://new.example.com/$1 [R=301,L]

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

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

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

Соответствующие файлы страниц ошибок (401.html, 404.html и др.) в данном примере размещены в директории errors из каталога сайта.

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

С помощью следующих директив можно ограничить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3:

Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3

Следующие строки позволят запретить доступ к сайту со всех IP-адресов кроме 123.4.5.6 и 123.5.4.3:

Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3

Для того, чтобы закрыть доступ к сайту для всех посетителей используйте директиву:

Deny from all

2.6 Переопределение главной страницы сайта (индексного файла каталога)

Главная страница сайта определяется следующей директивой:

DirectoryIndex index.html index.php

Список файлов указывается в порядке приоритета, то есть если в папке имеется файл index.html, то он будет отображен в качестве индексной страницы. Если же файл отсутствует, будет произведен поиск файла index.php. Если ни один файл не найден, отобразится список содержимого директории или ошибка 403.

2.7 Настройка кодировки по умолчанию

Следующая директива устанавливает для передаваемого содержимого кодировку Windows-1251 (cp1251):

AddDefaultCharset windows-1251

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

В случае отсутствия в папке главной страницы (индексного файла), в ответ на обращение к сайту без указания конкретного имени файла будет выдан список всех файлов, находящихся в каталоге.

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

Options -Indexes

2.9 Разрешение перехода по символическим ссылкам

Для разрешения перехода по символическим ссылкам используется директива:

Options +FollowSymLinks

2.10 Включение поддержки технологии SSI

Для того чтобы веб-сервер обрабатывал SSI-директивы в файлах .shtml и .shtm, необходимо добавить в .htaccess следующие строки:

Options +Includes
AddHandler server-parsed .shtml .shtm

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

Для запрета перехода на ваш сайт c сайта baddomain.ru добавьте в .htaccess следующие строки:

RewriteEngine on
RewriteCond %{HTTP_REFERER} baddomain\.ru [NC]
RewriteRule .* - [F]

Если требуется запретить переходы с нескольких доменов, то используйте директивы:

RewriteEngine on
RewriteCond %{HTTP_REFERER} baddomain\.ru [NC,OR]
RewriteCond %{HTTP_REFERER} baddomain2\.ru [NC,OR]
RewriteCond %{HTTP_REFERER} baddomain3\.ru [NC]
RewriteRule .* - [F]

3. Диагностика ошибок

Если после редактирования или размещения файла .htaccess при обращении к сайту вы получили ошибку 500 (Internal Server Error), то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в журнале ошибок.

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

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