×

Конфигурационный файл htaccess

htaccess

.htaccess это файл устанавливающий конфигурацию сервера apache на уровне директории. Он позволяет веб-мастерам определять различные правила редиректа, авторизации, кэширования, компрессии и многие другие параметры. Правила htaccess применяются конкретно к той директории и ее содержимому в которой он находится. Это делает их удобным инструментом для настройки поведения веб-сайта без необходимости изменения глобальной конфигурации сервера.

Комментарии в htaccess

Как и во многих других программных файлах в .htaccess присутствуют комментарии.
Закомментированные строки файла начинаются с символа #, в основном они несут пояснительный характер. Но также бывает, что комментарии несут функциональную нагрузку.
Давайте рассмотрим такой пример.

.htaccess

Данный кусок куда прописан в стандартном htaccess файле для cms платформы wordpress.
Как мы видим комментарии здесь присутствуют для того , чтобы разграничивать пользовательский код и написанный создателями движка.
Код между комментариями может быть автоматически изменен при обновлении системы.
Поэтому если вы хотите дополнить этот файл, стоит это делать до или после этого блока.

Редиректы

С помощью правил RewriteRule можно выполнять перенаправления URL, например, с HTTP на HTTPS, с www на без www, добавлять или удалять слеш в конце URL и многое другое.
Начнем пожалуй с 300ых редиректов.

  • 300 — сообщает, что по искомому запросу можно перейти не на одну, а на несколько альтернативных страниц;
  • 301 — постоянный редирект
  • 302 — временный
  • 303 — редирект на похожую по содержанию страницу
  • 305 — подключение через прокси.

Благодаря 300ым редиректам можно сообщать об изменении адреса контента без потерь качества SEO.
Допустим у вас изменилось название рубрики, или вы решили поменять структуру ссылок на своей cms, без изменений в htaccess. Ссылочный профиль этих страниц будет потерян, и работы по seo которые продвигали этот товар или страницу просто пропадут.
Благодаря редиректам мы можем решить эту проблему.

Редирект с http:// на https://

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

В данном примере при помощи Rewrite правил происходит редирект c http на https.

RewriteEngine on — указывает что перенаправления должны быть включены на сервере, если это не так.
RewriteCond — команда обозначающая, то правило после выполнения которого будет начинаться исполнение команды RewriteRule
RewriteRule — команда задающая шаблон переадресации (то куда будут перенаправляться запросы).
Переменные окружения записываются в формате %{переменная}.
В квадратных скобках записывается код перенаправления.

Редирект с www на адрес сайта без www

RewriteCond %{HTTP_HOST} ^www.(.)$
RewriteRule ^(.)$ https://%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

Редирект со страницы со слешем на страницу без слеша

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

Это основные случаи переадресации которые могут вам пригодиться при настройке сайта на apache.

Авторизация htaccess

Авторизация: Apache .htaccess позволяет задавать правила доступа к директориям с помощью файлов .htpasswd, обеспечивая защиту от несанкционированного доступа.

AuthName «Stop»
AuthType Basic
AuthUserFile «/.htpasswd»
require valid-user

В данном примере мы задаем имя авторизированной папки
тип аутентификация и файл в котором должны быть записаны логины и пароли.
содержимое файла .htpasswd выглядит примерно так: логин: пароль.

Сжатие данных на стороне сервера при помощи htaccess

В файле .htaccess мы можем прописать правила, благодаря которым сервер апачи будет сжимать данные перед отправкой пользователю. Это проиcходит при помощи модулей mod_deflate и mod_gzip

<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE image/jpeg
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif
</ifModule>

В данной команде после слова deflate следует формат данных, которые следует обрабатывать в этом модуле. Указание правил для модуля gzip выглядит похожим образом.

<ifModule mod_gzip.c>
<ifmodule>

Запрет доступа к важным файлам извне

При помощи конфигурационного файла можно запреть доступ к важным системным файлам, которые хранят конфиденциальную информацию необходимую для работы окружения.
Пример такой команды:

<files example.json>
Deny from all
</files>

Этот код в файле указывает на то, что доступ к файлу settings.json на сервере запрещен для всех пользователей. Давайте разберем каждую строку подробнее:

  1. <files example.json>— это директива, указывающая на то, что далее будут указаны правила для файла example.json. В данном случае, мы хотим применить определенные настройки к файлу example.json.
  2. Deny from all — это правило, которое запрещает доступ ко всем пользователям к файлу settings.json. Таким образом, любой запрос к этому файлу будет отклонен и пользователь не сможет получить доступ к его содержимому.

В данной статье мы рассмотрели основные сценарии в настройке .htccess , которые рано или поздно понадобятся веб мастеру.
Будьте внимательны и проверяйте работу сервера каждый раз когда вы добавляете и изменяете конфигурационный файл. Ведь подобные манипуляции могут запросто нарушить работу сервера.
С полным списком директив, которые вы сможете использовать с своем конфигурационном файле вы сможете ознакомиться на сайте httpd.apache.org