Помощь
Версия для печати

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

Содержание

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

На хостинге R01 в настоящее время используется веб-сервер Apache версии 2.4.

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

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


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

    1. Перенаправить запросы на domain.ru с любого из синонимов сайта

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

      Перенаправить запросы на www.domain.ru с любого из синонимов сайта

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

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

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

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

      Redirect 301 /page.html http://www.domain.ru/new_page.html

      где:

      • page.html - адрес старой страницы относительно корня сайта;
      • www.domain.ru - имя сайта;
      • new_page.html - адрес страницы, на которую нужно выполнить перенаправление.
      Подобное правило не сработает для перенаправления с адресов, содержащих Query String (символы после ?). Для запросов, содержащих QUERY_STRING, можно использовать сочетание RewriteCond и RewriteRule.

      Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:

      Options +FollowSymLinks
      RewriteEngine On
      RewriteCond %{QUERY_STRING} ^test=123$ [NC]
      RewriteRule ^period/$ http://domain.ru/ [L,R=301]
    3. Переопределение страниц ошибок

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

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

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

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

      1. в файле ~/ваш_домен/docs/robots.txt прописать

        User-agent: *
        Disallow: /errors
      2. создать файл ~/ваш_домен/docs/errors/.htaccess, в котором прописать

        Options -Indexes

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

      Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.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. Переопределение главной страницы сайта (индексного файла каталога)

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

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

      RemoveHandler .html .htm
      AddType application/x-httpd-php .php .htm .html .phtml
    8. Запрет выдачи листинга каталога

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

      Options -Indexes
    9. Включить выполнение CGI-скриптов в папке docs для файлов с расширениями .cgi, .pl. .py

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

      AddHandler cgi-script .cgi .pl .py
      Options +ExecCGI

      Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).

      Атрибуты (права доступа) можно изменить с помощью файлового менеджера панели управления, при помощи вашего FTP-клиента или по SSH. Также в разделе Веб-сервер ? Управление модулями должен быть включен модуль CGI.

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

      Для запрета перехода c baddomain.ru на domain.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]
    11. Особенности использования кириллических доменов (.РФ, .МОСКВА и др.)

      В файле .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-представление доменного имени в адресной строке браузера. Это не является ошибкой.

    12. Перенаправление с HTTP на HTTPS и обратно

      Перенаправить запросы на https://domain.ru

      RewriteEngine on
      RewriteCond %{ENV:HTTPS} !on
      RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

      Перенаправить запросы на http://domain.ru

      RewriteEngine on
      RewriteCond %{ENV:HTTPS} on
      RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • Диагностика ошибок

    Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.

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

    С подробной документацией вы можете ознакомиться на сайте разработчика веб-сервера Apache: http://httpd.apache.org/docs/2.4/rewrite/

Copyright © 2000-2024 Registrar R01
Информация для клиентов: +7 (495) 783-3-783; info@r01.ru
Техническая поддержка: +7 (495) 783-3-783; support@r01.ru
Центральный офис: г. Москва, Большой Гнездниковский переулок, дом 1, строение 2 ( м. «Тверская», выход №9, Бизнес-Центр «Вознесенский»).