Создание и изменение файла .htaccess

Файл .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>