- Для чего нужен файл .htaccess
- Что можно сделать с помощью .htaccess
- Как работает .htaccess
- Как выглядит .htaccess
- Как создать .htaccess
- Настройка .htaccess
- Редиректы
- Ограничение или разрешение доступа к сайту с определенных IP-адресов
- Ограничение доступа к определенным файлам
- Назначение кодировки
- Отображение возникающих ошибок PHP на странице
- Настройка страниц ошибок
Для чего нужен файл .htaccess
.htaccess (сокращение от «hypertext access») — это дополнительный конфигурационный файл для Apache. Веб-сервер должен учитывать параметры, указанные в файле, когда обрабатывает запрос.
Обратите внимание, что .htaccess работает только с Apache. У других веб-серверов, например Nginx, есть свои файлы.
Параметры, указанные в .htaccess, не затрагивают настройки главного конфигурационного файла Apache — httpd.conf. Они влияют только на каталоги (и их подкаталоги), в которых этот файл размещен.
Где находится файл .htaccess? Если вам нужно, чтобы настройки .htaccess работали для всего сайта, разместите его в корневом каталоге. Для подкаталогов тоже можно создавать .htaccess-файлы, но учтите, что они будут мешать настройкам файла .htaccess, размещенным на уровне выше. Если вы используете CMS, скорее всего, этот файл был создан программой автоматически и чаще всего его можно найти в папке «public_html» или «www».
Что можно сделать с помощью .htaccess
- Настроить переадресацию (редирект):
- Ограничить или разрешить доступ к сайту с определенных IP-адресов. Это позволит контролировать доступ, а также отражать хакерские атаки. Например, во время DDoS-атаки можно запретить обработку запросов с определенных IP, что не даст злоумышленнику нарушить работоспособность сервера.
- Запретить доступ к конкретным файлам. Если сайт содержит папку с конфиденциальной информацией, ей нужна дополнительная защита. Через .htaccess можно настроить доступ по логину и паролю.
- Назначить кодировку по умолчанию. Если на сайте вы увидели не текст, а набор непонятных символов — на сайте указана неправильная кодировка. Самая распространенная кодировка — UTF-8. Указать правильную настройку и починить сайт можно в .htaccess.
- Указать, какие страницы должны отображаться у пользователей, при ошибках системы. На сайтах могут быть 400, 403, 404, 502 и другие ошибки. Чтобы немного сгладить неприятное впечатление пользователя от проблемы, нужно создать красочную страницу ошибки и в .htaccess указать, при каких проблемах показывать ту или иную страницу.
- Запретить поисковым роботам индексировать страницу. Поисковые роботы изучают все веб-страницы в интернете, если по какой-либо причине вы хотите скрыть страницу от роботов, просто запретите индексацию в файле .htaccess.
- Настроить параметры PHP. Настраивать PHP можно не только в php.ini, но и в .htaccess.
Весь список директив, которые возможно использовать в .htaccess, можно найти в официальной документации PHP и Apache:
Как работает .htaccess
Когда веб-сервер получает запрос, например, данные определенной страницы сайта, сначала он проверяет, есть ли .htaccess в файлах сайта. Проверка начинается с корневого каталога и затем всё ниже и ниже по иерархии папок. Если файл найден, веб-сервер изучает команды, описанные в .htaccess, и применяет их при дальнейшей обработке запроса.
Как выглядит .htaccess
.htaccess — простой текстовый файл, где в каждой строке указана команда (директива). Пустые строки игнорируются.
Символ «#» в начале строки — комментарий. Система не читает эти строки. Их используют для удобства, чтобы описать смысл конкретной команды или блока.
Как создать .htaccess
Многие CMS (WordPress, Joomla, 1С-Битрикс и другие) создают файл .htaccess автоматически. Найти его можно в корневой папке в панели управления хостингом. Обычно он пустой или с парой комментариев. То есть вы сразу можете начинать работу с нужными командами.
Если же сайт был написан с нуля или вы случайно удалили существующий файл, нужно:
- Создать файл .htaccess вручную на устройстве.
- Перенести созданный файл на виртуальный хостинг.
Этап 1. Создайте файл .htaccess: инструкция для Windows
Если вы работаете на Windows, создать .htaccess можно в Блокноте.
- Откройте Блокнот.
- Нажмите Файл → Сохранить как …:
- В строке «Тип файла» выберите Все файлы. В строке «Имя файла» введите .htaccess и нажмите Сохранить:
- Файл создан. Если, несмотря на выбранные параметры, файл сохранился в формате .htaccess.txt, нужно убрать txt-расширение. Для этого откройте проводник, перейдите во вкладку Вид и уберите галочку напротив пункта Расширения имен файлов:
Этап 2. Разместите файл на хостинге SpaceWeb
Когда файл готов, его нужно разместить на хостинге в корневом или обычном каталоге.
- Перейдите в раздел Хостинг → Файловый менеджер.
- Выберите папку, в которую хотите поместить файл .htaccess и нажмите на значок Загрузить файлы:
- Выберите файл на своем компьютере, который вы создали на предыдущем этапе. Теперь файл .htaccess есть на хостинге:
Этап 3. Сообщите Apache, что он должен использовать .htaccess
Чтобы Apache использовал в своей работе файл .htaccess, в httpd.conf нужно добавить строку:
Настройка .htaccess
А теперь покажем, какие директивы (команды) для настройки .htaccess могут вам понадобиться для сайта.
Редиректы
Если при настройке перенаправлений вы используете кириллические домены, в .htaccess их нужно указывать в формате Punycode. Перевести веб-адрес в нужный формат можно с помощью специального сервиса, например 2ip.
Все способы редиректа в .htaccess вы можете прочитать в нашей статье Как настроить редирект через .htaccess. Здесь расскажем о двух основных настройках.
Переадресация на другой домен
Укажите в файле .htaccess:
RewriteCond %{HTTP_HOST} olddomain.ru
RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]
Где:
- olddomain.ru — домен, с которого вы настраиваете перенаправление;
- newdomain.ru — домен, на который нужно перенаправить пользователей.
Переадресация сайта с HTTP на HTTPS
Обратите внимание, что перенаправление с HTTP на HTTPS нужно делать в файле .htaccess в корневой папке сайта. Введите:
SetEnvIf X-Forwarded-Proto https SERVER_PORT=443
SetEnvIf X-Forwarded-Proto https HTTPS=on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Переадресация поддомена в подкаталог сайта
Чтобы настроить переадресацию запросов на поддомен в подкаталог сайта добавьте в файл .htaccess строки:
RewriteBase /
RewriteCond %{HTTP_HOST} (www\.)?img\.example\.com$
RewriteCond %{REQUEST_URI} !img/
RewriteRule ^(.*)$ img/$1
Где:
img\.example\.com ― поддомен, с которого должна переадресовываться страница.
img ― подкаталог, в котором находятся файлы поддомена.
Экранирование точки обратной косой чертой (\) в строке 3 необязательно.
Ограничение или разрешение доступа к сайту с определенных IP-адресов
Чтобы ограничить доступ к сайту с определенных IP-адресов в файл .htaccess добавьте:
Allow from all
Deny from IP
Вместо IP в третьей строке укажите, тот IP-адрес, который хотите ограничить, или список IP-адресов через пробел.
Чтобы разрешить доступ к сайту только с определенных IP-адресов, добавьте:
Deny from all
Allow from IP
Вместо IP в третьей строке укажите IP-адрес (или список IP-адресов через пробел), которому хотите разрешить доступ к сайту.
Подробнее об этой директиве можно прочитать в статье Как запретить доступ к сайту через файл .htaccess.
Ограничение доступа к определенным файлам
Для этого добавьте в .htaccess строки:
Order Deny,Allow
Deny from all
Allow from IP
</Files>
Где:
- ПУТЬ_К_ФАЙЛУ — путь к файлу, к которому нужно ограничить доступ;
- IP — IP-адрес, для которого вам нужно разрешить доступ.
Назначение кодировки
Для этого добавьте строку:
Для корректной установки CMS Bitrix
Для корректной установки CMS Bitrix в файле .htaccess необходимо указать следующие строки:
php_value mbstring.func_overload 2
php_value max_input_vars 10000
php_value pcre.recursion_limit 1000
Отображение возникающих ошибок PHP на странице
Чтобы контролировать работу сайта, нужно настроить отображение ошибок PHP. Один из способов это сделать ― добавить директиву в .htaccess:
php_value error_reporting -1
Настройка страниц ошибок
Чтобы настроить отображение страниц ошибок, используйте директиву ErrorDocument. Формула для составления команды:
ErrorDocument + номер ошибки + путь к странице с ошибкой или текстовое сообщение.
Примеры:
ErrorDocument 401 /info.html
ErrorDocument 403 "you shall not pass"
ErrorDocument 500 http://example.com/500.php