Файл .htaccess (на английском hypertext access) – это специальный файл на сервере, который включает в себя его настройки и конфигурации. При помощи инструкций указанных в файле .htaccess можно указать дополнительные параметры сервера, которые будут задавать права и разрешения для доступа к папкам, каталогам, файлам на сервере. Файл .htaccess размещается в корневой директории. Если он отсутствует на сервере, перед его созданием, убедитесь, что в аккаунте отображаются все файлы, включая скрытые. Некоторые хостинги web-сервера Apache устанавливают .htaccess по умолчанию и часто отключают возможность его конфигурации. В этом случае необходимо подключить конфигурацию в настройках главного файла конфигурации. За это отвечает директива AllowOverride. Создание и изменение файла .htaccess – это очень ответственный момент. Ошибки в файле .htaccess могут повлиять на работу всего сайта. Если вы собираетесь изменить существующий файл .htaccess, обязательно сохраните резервную копию .htaccess. Обратите внимание! Настройки .htaccess могут прямо влиять на производительность сайта, поэтому используйте изменение файла .htaccess только в случаях крайней необходимости, если поставленную задачу нельзя выполнить другим способом.
Примеры файла .htaccess
Пример файла .htaccess для WordPress (стандартный образец)
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Конфигурации файла .htaccess позволяют включить защиту сайта от хакеров, включить переадресацию на другие страницы, блокировать доступ к файлам и папкам, защитить паролем содержимое сайта, защитить доступ в админ-панель, блокировать IP адреса, блокировать доступ к изображениям и т.д. Давайте рассмотрим основной функционал:
Как запретить загрузку изображений и других файлов с вашего хостинга другими ресурсами для своих целей (это дает снижение нагрузки на сервер) смотрите следующий пример.
Часто владельцы разных сайтов, копируют файлы с других ресурсов. В основном это относится к изображениям. Чтобы обезопасить себя от излишней нагрузки на сервер, можно добавить в файл .htaccess следующие параметры:
Options +FollowSymlinks #Запрещаем загрузку файлов с внешних сайтов RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc] RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealing_bandwidth.gif[nc]
Чтобы увеличить размер максимально допустимых к загрузке файлов, произведите изменение значений конфигурации PHP, которую также можно записать в файл .htaccess используйте основу показанную в примере ниже.
Данный код можно прямо вставить в тело файла .htaccess, как дополнительные установки:
php_value upload_max_filesize 128M php_value post_max_size 128M php_value max_execution_time 300 php_value max_input_time 300 php_value memory_limit 256M
Чтобы заблокировать доступ к сайту по IP.
Например, часто это требуется для блокировки комментариев от определенных пользователей.
#Black-list allow from all deny from 111.123.12.123 deny from 125.12.
Чтобы запретить доступ к файлу или директории сайта в файле .htaccess, смотрите пример ниже:
В данном примере закрывается доступ к файлу .htaccess:
#secure .htaccess <files .htaccess> order allow,deny deny from all </files>
Чтобы сделать перенаправление со старого домена на новый домен, используйте ниже приведенный пример:
В данном примере закрывается доступ к файлу .htaccess:
RewriteEngine On RewriteCond %{HTTP_HOST} domain1.com RewriteRule (.*) http://domain2.com/$1 [R=301,L]
Как создать собственные страницы ошибок 401, 403, 404, 500 , смотрите в следующем примере:
В данном случае мы прямо в файле .htaccess указываем расположение страниц, на которые будет направлен пользователь, в случае если появится ошибка с кодом 401, 403, 404, 500.
ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php
Как перенаправить сайт с http на https в файле .htaccess, показано в примере ниже:
Данный пример написан для системы управления контентов WordPress, однако может быть изменен и для других сайтов.
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] #for SSL RewriteCond %{HTTP:SSL} !=1 [NC] RewriteRule ^(.*) https://24hit.com/$1 [L,R=301]
Как запретить отображать сайт в iframe, смотрите в следующем примере:
Подобно примеру с картинками, в файле .htaccess можно указать конфигурацию, которая запретит копирование сайта в iframe-блоки.
<IfModule mod_headers.c> Header always append X-Frame-Options SAMEORIGIN </IfModule>