.htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.
На хостинге Руцентра используется веб-сервер Apache версии 2.4.
Редактировать файл .htaccess услуги «Конструктор сайтов» следует через интерфейс услуги. В случае внесения изменения не через интерфейс конструктора изменения будут перезаписаны после публикации сайта.
Чтобы попасть в раздел «Пользовательский .htaccess», наведите курсор на раздел «Настройки», а после нажмите на кнопку «Настройки» в выпадающем меню.
Перейдите в меню «Пользовательский .htaccess» и внесите необходимые вам директивы в поле ввода. Для включения указанных директив в файл .htaccess необходимо нажать на «Включить .htaccess», применить настройки и после опубликовать сайт. Если необходимо убрать указанные директивы без их удаления из данного поля, снимите галочку с «Включить .htaccess», примените настройки и опубликуйте сайт.
1. Перенаправление доменов c синонима сайта на основной домен с кодом 301
Перенаправить запросы на yourdomain.ru с любого из синонимов сайта:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain\.ru$ [NC]
RewriteRule ^(.*)$ http://yourdomain.ru/$1 [L,R=301]
Перенаправить запросы на www.yourdomain.ru с любого из синонимов сайта:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.ru$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.ru/$1 [L,R=301]
Эти правила рекомендуется размещать в самом начале файла .htaccess.
2. Постоянное перенаправление с кодом 301
Если вы изменили адрес страницы сайта, добавьте в .htaccess следующие строки, чтобы запросы со старого адреса переадресовывались на новый:
Redirect 301 /page.html http://www.yourdomain.ru/new_page.html
где:
Подобное правило не сработает для перенаправления с адресов, содержащих Query String (символы после ?). Для запросов, содержащих QUERY_STRING, можно использовать сочетание RewriteCond и RewriteRule.
Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на yourdomain.ru, вы можете написать:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} ^test=123$ [NC]
RewriteRule ^period/$ http://yourdomain.ru/ [L,R=301]
3. Переопределение страниц ошибок
При помощи файла .htaccess вы можете установить свои страницы ошибок:
#401 Авторизация не выполнена
ErrorDocument 401 http://yourdomain.ru/errors/401.html
#403 Доступ запрещен
ErrorDocument 403 http://yourdomain.ru/errors/403.html
#404 Страница не найдена
ErrorDocument 404 http://yourdomain.ru/errors/404.html
#500 Внутренняя ошибка сервера
ErrorDocument 500 http://yourdomain.ru/errors/500.html
Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге ~/ваш_домен/docs/errors.
Для того чтобы при случайном упоминании прямых ссылок на такие страницы, они не проиндексировались в поисковых системах, рекомендуется:
a) в файле ~/ваш_домен/docs/robots.txt прописать:
User-agent: *
Disallow: /errors
b) создать файл ~/ваш_домен/docs/errors/.htaccess, в котором прописать:
Options -Indexes
4. Постраничное перенаправление запросов на другой домен c кодом 301
Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://yourdomain.ru/main будет переадресован на http://www.newdomain.ru/main:
Redirect 301 / http://www.newdomain.ru/
либо:
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
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
Запретить доступ к сайту со всех адресов кроме 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
6. Запрет выдачи листинга каталога
В случае отсутствия в папке главной страницы (индексного файла), при обращении без указания конкретного имени файла в запросе будет выдан список всех файлов, находящихся в каталоге. Чтобы запретить отображение листинга каталога, добавьте в файл .htaccess строку:
Options -Indexes
7. Блокировка переходов со сторонних ресурсов
Для запрета перехода c baddomain.ru на yourdomain.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]
8. Особенности использования кириллических доменов (.РФ, .МОСКВА и др.)
В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.
Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site.ru [NC]
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1 [R=301,L]
В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.
Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.
С подробной документацией вы можете ознакомиться на сайте разработчика веб-сервера Apache.