Название файла .htaccess (сокращение от “hypertext access”) начинается с точки. Это означает, что файл - служебный и не относится непосредственно к файлам сайта, а используется для настроек web-сервера, является частью конфигурации web-сервера Apache.
Благодаря .htaccess пользователи виртуального хостинга могут настраивать работу отдельных папок, не имея доступа к основному файлу конфигурации web-сервера Apache (httpd.conf). К файлу httpd.conf имеют доступ лишь суперпользователи (root), соответственно, редактировать его могут лишь владельцы VPS/VDS и выделенных серверов.
При изменении файла новый набор настроек сразу начинает работать и не требует перезагрузки web-сервера.
Ограничения использования .htaccess у провайдера хостинга
Провайдер хостинга может запретить применение определенных директив в целях безопасности или снижения нагрузки на сервер. Названия директив может меняться, в зависимости от используемой на сервере провайдера версии Apache.
К примеру, у некоторых хостеров запрещено использовать в .htaccess команду преобразования адресов в верхний регистр в связи с тем, что их работа значительно увеличивает нагрузку на веб-сервер.
Для редактирования файлов .htaccess из командной строки сервера используйте текстовые редакторы vi, nano, mcedit.
Схема работы .htaccess
1. Когда web-сервер получает запрос по протоколу HTTP (или HTTPS) к какому-либо файлу на сервере (определенной странице сайта), он предварительно проверяет наличие файла .htaccess в той же папке (или в одной из вышестоящих по иерархии каталогов папок, начиная с корневого каталога сайта).
2. Если файл найден, то web-сервер считывает из него конфигурационные команды и применяет их в своей работе.
Файл .htaccess влияет не только на отдачу файлов из той папки, где он расположен, но и на все вложенные в нее папки. Если в одном из подкаталогов существует свой файл .htaccess, то тогда находящиеся в нем команды имеют приоритет над аналогичными командами, имеющимися в файлах .htaccess верхнего уровня.
Чтобы Apache использовал в своей работе файл .htaccess, необходимо для конкретной директории в конфигурации web-сервера указать директиву “AllowOverride All”. Её нужно прописывать в файл конфигурации web-сервера Apache (httpd.conf) - /etc/httpd/conf/httpd.conf или /etc/apache2/apache2.conf (это зависит от версии веб-сервера и ОС).
Директива должна иметь вид:
После внесения изменений не забудьте перезагрузить веб-сервер, предварительно проверив корректность конфигурации:
Провайдеры по умолчанию включают эту настройку для папок с сайтами пользователей на виртуальном хостинге, а владельцам VPS/VDS и выделенных серверов нужно самостоятельно проверить у себя наличие такой конфигурации в Apache.
Имя служебного файла в Apache может меняться. Этим управляет директива AccessFileName. Например, если указать в конфигурации Apache директиву “AccessFileName .config”, то web-сервер будет вместо .htaccess искать файлы .config. Но название файла .htaccess стало индустриальным стандартом, и поэтому на хостингах используется именно этот файл.
Многие CMS, как, например, Wordpress, самостоятельно при установке на хостинг размещают файл .htaccess в корневой папке сайта для настройки своей работы.
Web-сервер Apache чувствителен к наличию в .htaccess неправильных или неизвестных команд. Если синтаксис этого файла нарушен, то запрос к любому файлу будет отдавать браузеру посетителя ошибку 500 (Ошибка конфигурации сервера). Поэтому редактировать файл .htaccess следует с осторожностью и сразу после его изменения необходимо проверять работоспособность сайта.
Проверить, включена ли поддержка .htaccess на сервере, просто: нужно добавить какую-либо неправильную команду (любую фразу на английском с ошибкой) в этот файл и открыть страницу в браузере. Если показывается ошибка 500, то это означает, что web-сервер настроен на применение .htaccess, и его можно использовать для отладки работы конкретного сайта.
Как выглядит .htaccess?
.htaccess - это текстовый файл.
Каждая строка файла означает определенную команду конфигурации (директиву) Apache.
Пустые строки игнорируются.
Строки, которые начинаются с символа решетки “#”, - это комментарии, и они не влияют на конфигурацию web-сервера.
С помощью комментариев в .htaccess удобно описывать смысл конкретной команды или блока команд в сложных, состоящих из большого количества строк, файлах.
Файл .htaccess на хостинге вы сможете отредактировать с помощью FTP-доступа, например, используя FTP-клиент Filezilla.
Для этого нажмите правой кнопкой мыши на файл, чтобы открыть контекстное меню с пунктом “Просмотр/Правка”.
Filezilla использует для редактирования текстовый редактор Notepad++, который должен быть установлен на локальный компьютер.
Мы не рекомендуем для редактирования файла .htaccess и других конфигурационных файлов использовать “Блокнот” Windows.
Иногда, если применяются устаревшие FTP-клиенты, .htaccess не показывается в списке файлов. Это происходит из-за того, что его название начинается с точки. Следует обновить FTP-клиент или проверить его настройки на предмет отключения фильтрации файлов, начинающихся с точки. При использовании Filezilla таких проблем не возникает.
Как мы писали выше, файл .htaccess автоматически генерируется в папке сайта на хостинге вместе с созданием сайта у некоторых CMS, таких, как Wordpress. Но есть движки, которые размещают этот файл под другим названием. Например, Joomla создает файл htaccess.txt, и его нужно переименовывать вручную.
В случае, если файла в папке сайта нет, создайте его самостоятельно.
1. Для этого откройте блокнот (notepad), добавьте туда нужные команды и сохраните как текстовый документ с названием .htaccess.
2. Переименуйте сохраненный файл, убрав расширение “.txt”.
3. С помощью FileZilla загрузите его через FTP в папку с сайтом.
Также .htaccess можно отредактировать из панели управления хостингом.
1. Для редактирования .htaccess в панели управления зайдите в менеджер файлов.
2. Откройте корневую папку сайта public_html, найдите в ней файл .htaccess и отредактируйте его во встроенном редакторе.
Так выглядит работа с .htaccess у провайдера Beget
Ниже будут рассмотрены наиболее востребованные из настроек в контексте web-хостинга.
Чтобы включить работу перенаправления запросов, укажите в .htaccess команду:
Команду “RewriteEngine on” в файле .htaccess достаточно использовать лишь один раз.
В своей работе механизм перенаправления mod_rewrite применяет специальную технологию программирования regexp для сравнения запросов с определенным шаблоном.
Для поисковых систем важно знать, какой из адресов сайта является основным, а какие - дополнительными. Для того, чтобы точно указать адрес основного сайта используют механизм “склейки” адресов. Он заключается в том, что браузер посетителя при заходе на дополнительный адрес сайта получает от web-сервера команду перенаправления на основной адрес - 301 redirect.
301 - это специальный код ответа web-сервера, который обозначает, что данный адрес (URL) страницы является постоянно переадресуемым на другой URL, являющийся основным. И в будущем для доступа к данной странице следует использовать именно основной URL.
Для настройки постоянного 301-редиректа с адреса www.mysite.ru на mysite.ru нужно использовать следующий набор команд в .htaccess:
Владельцы сайтов с настроенной поддержкой HTTPS (с SSL-сертификатом) на хостинге могут включить с помощью .htaccess автоматическое перенаправление посетителей на HTTPS-версию сайта. Это делается следующими командами в .htaccess:
Например, было mysite.ru/page/, стало mysite.ru/page.
Для этого используйте набор команд в .htaccess:
Такую настройку можно получить с помощью кода в .htaccess:
То же происходит в случае ошибок 400 (неправильный запрос), 500 (ошибка сервера) и других распространенных ошибочных состояний web-сервера.
Чтобы у пользователя было больше информации, можно настроить свои собственные страницы для обработки ошибок web-сервера с возможностью навигации по сайту. На странице может быть указано, что человек перешел по несуществующей ссылке, и предложение поискать нужную информацию на сайте, а не уйти с него.
Например, на сайте ru.hostings.info используется такая страница обработки ошибки 404.
Чтобы показывать пользователям сайта специальные страницы ошибок (404 и других) вместо стандартных, нужно создать файл для этой страницы (например, /404.html, /500.html) и добавить соответствующий код в файл .htaccess:
Web-сервер Apache с такой настройкой .htaccess начинает работать как программное обеспечение с функционалом Web Application Firewall (WAF).
Такая фильтрация не служит 100% гарантией защиты сайта, но в качестве одного из компонентов безопасности весьма полезна.
Синтаксис .htaccess для блокировки следующий:
Синтаксис для .htaccess:
Для защиты от подобной кражи контента можно использовать такой код в .htaccess:
Аналогично информацию о себе посылают на сервер клиентские приложения, различные поисковые роботы и пауки. С помощью User-Agent страница может также определить тип устройства пользователя.
Для блокировки доступа к сайту, в зависимости от заголовка User-Agent, используется следующий код в .htaccess:
В настоящее время для web-сайтов наиболее часто используется универсальная кодировка UTF-8, но встречаются страницы, созданные на кириллических кодировках Windows-1251 или KOI8-r.
Обычно кодировку указывают в метатегах заголовка HTML-кода страницы:
<meta http-equiv="content-type" content="text/html; charset=Windows-1251">
Если данный метатег не указан, то с помощью файла .htaccess можно сообщить браузеру, что он должен использовать для всех страниц сайта определенную кодировку:
Чтобы включить Gzip-сжатие в файл .htaccess, в зависимости от настроек используемого хостинга, нужно добавить следующие команды:
Настроить HTTP-кэширование для сайта можно с помощью следующего кода в .htaccess:
Оптимальный срок хранения файлов в кэше - от семи дней до месяца, в зависимости от конкретного типа файлов.
Для этого используются две команды:
Для использования с php_flag
Источник статьи: https://ru.hostings.info/schools/htaccess.html
Благодаря .htaccess пользователи виртуального хостинга могут настраивать работу отдельных папок, не имея доступа к основному файлу конфигурации web-сервера Apache (httpd.conf). К файлу httpd.conf имеют доступ лишь суперпользователи (root), соответственно, редактировать его могут лишь владельцы VPS/VDS и выделенных серверов.
При изменении файла новый набор настроек сразу начинает работать и не требует перезагрузки web-сервера.

Ограничения использования .htaccess у провайдера хостинга
Провайдер хостинга может запретить применение определенных директив в целях безопасности или снижения нагрузки на сервер. Названия директив может меняться, в зависимости от используемой на сервере провайдера версии Apache.
К примеру, у некоторых хостеров запрещено использовать в .htaccess команду преобразования адресов в верхний регистр в связи с тем, что их работа значительно увеличивает нагрузку на веб-сервер.
Использование .htaccess на виртуальном или выделенном сервере
При использовании услуги собственного VPS/VDS или выделенного сервера у вас есть полный доступ к изменению настроек web-сервера Apache с помощью редактирования его основных конфигурационных файлов. При этом применение файлов .htaccess также остается удобной возможностью для внесения корректив в работу сервера без перезагрузки.Для редактирования файлов .htaccess из командной строки сервера используйте текстовые редакторы vi, nano, mcedit.
Схема работы .htaccess
1. Когда web-сервер получает запрос по протоколу HTTP (или HTTPS) к какому-либо файлу на сервере (определенной странице сайта), он предварительно проверяет наличие файла .htaccess в той же папке (или в одной из вышестоящих по иерархии каталогов папок, начиная с корневого каталога сайта).
2. Если файл найден, то web-сервер считывает из него конфигурационные команды и применяет их в своей работе.
Файл .htaccess влияет не только на отдачу файлов из той папки, где он расположен, но и на все вложенные в нее папки. Если в одном из подкаталогов существует свой файл .htaccess, то тогда находящиеся в нем команды имеют приоритет над аналогичными командами, имеющимися в файлах .htaccess верхнего уровня.
Чтобы Apache использовал в своей работе файл .htaccess, необходимо для конкретной директории в конфигурации web-сервера указать директиву “AllowOverride All”. Её нужно прописывать в файл конфигурации web-сервера Apache (httpd.conf) - /etc/httpd/conf/httpd.conf или /etc/apache2/apache2.conf (это зависит от версии веб-сервера и ОС).
Директива должна иметь вид:
/var/www/ по необходимости нужно заменить на свою директорию сайта.<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
После внесения изменений не забудьте перезагрузить веб-сервер, предварительно проверив корректность конфигурации:
Если вывод будет Syntax OK, то выполните: service httpd restart.httpd -t
Провайдеры по умолчанию включают эту настройку для папок с сайтами пользователей на виртуальном хостинге, а владельцам VPS/VDS и выделенных серверов нужно самостоятельно проверить у себя наличие такой конфигурации в Apache.
Имя служебного файла в Apache может меняться. Этим управляет директива AccessFileName. Например, если указать в конфигурации Apache директиву “AccessFileName .config”, то web-сервер будет вместо .htaccess искать файлы .config. Но название файла .htaccess стало индустриальным стандартом, и поэтому на хостингах используется именно этот файл.
Многие CMS, как, например, Wordpress, самостоятельно при установке на хостинг размещают файл .htaccess в корневой папке сайта для настройки своей работы.
Web-сервер Apache чувствителен к наличию в .htaccess неправильных или неизвестных команд. Если синтаксис этого файла нарушен, то запрос к любому файлу будет отдавать браузеру посетителя ошибку 500 (Ошибка конфигурации сервера). Поэтому редактировать файл .htaccess следует с осторожностью и сразу после его изменения необходимо проверять работоспособность сайта.
Проверить, включена ли поддержка .htaccess на сервере, просто: нужно добавить какую-либо неправильную команду (любую фразу на английском с ошибкой) в этот файл и открыть страницу в браузере. Если показывается ошибка 500, то это означает, что web-сервер настроен на применение .htaccess, и его можно использовать для отладки работы конкретного сайта.
Как выглядит .htaccess?
.htaccess - это текстовый файл.
Каждая строка файла означает определенную команду конфигурации (директиву) Apache.
Пустые строки игнорируются.
Строки, которые начинаются с символа решетки “#”, - это комментарии, и они не влияют на конфигурацию web-сервера.
С помощью комментариев в .htaccess удобно описывать смысл конкретной команды или блока команд в сложных, состоящих из большого количества строк, файлах.
Как редактировать .htaccess?# убираем слэш в конце адреса
RewriteCond %{REQUEST_URI} .+/$ [NC]
RewriteRule ^(.+)(/)$ $1 [L,R=301]
Файл .htaccess на хостинге вы сможете отредактировать с помощью FTP-доступа, например, используя FTP-клиент Filezilla.
Для этого нажмите правой кнопкой мыши на файл, чтобы открыть контекстное меню с пунктом “Просмотр/Правка”.

Filezilla использует для редактирования текстовый редактор Notepad++, который должен быть установлен на локальный компьютер.

Мы не рекомендуем для редактирования файла .htaccess и других конфигурационных файлов использовать “Блокнот” Windows.
Иногда, если применяются устаревшие FTP-клиенты, .htaccess не показывается в списке файлов. Это происходит из-за того, что его название начинается с точки. Следует обновить FTP-клиент или проверить его настройки на предмет отключения фильтрации файлов, начинающихся с точки. При использовании Filezilla таких проблем не возникает.
Как мы писали выше, файл .htaccess автоматически генерируется в папке сайта на хостинге вместе с созданием сайта у некоторых CMS, таких, как Wordpress. Но есть движки, которые размещают этот файл под другим названием. Например, Joomla создает файл htaccess.txt, и его нужно переименовывать вручную.
В случае, если файла в папке сайта нет, создайте его самостоятельно.
1. Для этого откройте блокнот (notepad), добавьте туда нужные команды и сохраните как текстовый документ с названием .htaccess.
2. Переименуйте сохраненный файл, убрав расширение “.txt”.
3. С помощью FileZilla загрузите его через FTP в папку с сайтом.
Также .htaccess можно отредактировать из панели управления хостингом.
1. Для редактирования .htaccess в панели управления зайдите в менеджер файлов.
2. Откройте корневую папку сайта public_html, найдите в ней файл .htaccess и отредактируйте его во встроенном редакторе.

Так выглядит работа с .htaccess у провайдера Beget
Ниже будут рассмотрены наиболее востребованные из настроек в контексте web-хостинга.
Механизм перенаправления запросов (mod_rewrite)
Модуль перенаправления и перезаписи запросов (mod_rewrite) в Apache используется для управления обработкой запросов к web-серверу. Правила обработки запросов почти всегда различаются, в зависимости от конкретных сайтов и папок, поэтому использование .htaccess - это идеальный вариант для их настройки.Чтобы включить работу перенаправления запросов, укажите в .htaccess команду:
Затем следует перечень специальных команд для настройки перенаправления, в зависимости от конкретных условий.RewriteEngine on
Команду “RewriteEngine on” в файле .htaccess достаточно использовать лишь один раз.
В своей работе механизм перенаправления mod_rewrite применяет специальную технологию программирования regexp для сравнения запросов с определенным шаблоном.
Склейка разных адресов одного сайта
При настройке сайта на хостинге можно указать дополнительные доменные имена для сайта - алиасы (псевдонимы), например, www.mysite.ru для сайта mysite.ru.Для поисковых систем важно знать, какой из адресов сайта является основным, а какие - дополнительными. Для того, чтобы точно указать адрес основного сайта используют механизм “склейки” адресов. Он заключается в том, что браузер посетителя при заходе на дополнительный адрес сайта получает от web-сервера команду перенаправления на основной адрес - 301 redirect.
301 - это специальный код ответа web-сервера, который обозначает, что данный адрес (URL) страницы является постоянно переадресуемым на другой URL, являющийся основным. И в будущем для доступа к данной странице следует использовать именно основной URL.
Для настройки постоянного 301-редиректа с адреса www.mysite.ru на mysite.ru нужно использовать следующий набор команд в .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mysite\.ru$ [NC]
RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]
Перенаправление с HTTP-версии сайта на HTTPS-версию
Поисковые системы поощряют переход сайтов на безопасный режим HTTPS и дают ресурсам с поддержкой этого протокола лучшие результаты в поисковой выдаче.Владельцы сайтов с настроенной поддержкой HTTPS (с SSL-сертификатом) на хостинге могут включить с помощью .htaccess автоматическое перенаправление посетителей на HTTPS-версию сайта. Это делается следующими командами в .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Перенаправление страницы на другой адрес (URL)
Чтобы перенаправить всех посетителей определенной страницы сайта на другую, настройте в .htaccess специальную директиву Apache “Redirect”:В случае переезда сайта на новый домен, настройте переадресацию пользователей на новый доменный адрес командой:Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html
Чтобы настроить автоматическое перенаправление всех страниц определенного раздела на сайте на такие же страницы в другом разделе, примените команду в .htaccess с использованием RewriteEngine:Redirect 301 / http://nynewsite.ru/
Чтобы автоматически добавлялся суффикс .html при доступе к страницам сайта (то есть, при вводе в браузере адреса mysite.ru/page происходило перенаправление на mysite.ru/page.html), нужно прописать в .htaccess следующее:RewriteRule ^razdel1/(.*)$ http://mysite.ru/razdel2/$1 [R=301,L]
Для того, чтобы убрать .html из URL, запустите команду:RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
Иногда для правильной обработки страниц поисковыми системами требуется убрать слэш (символ “/”) в конце адреса страницы.RewriteRule (.*)\.html$ $1 [R=301,L]
Например, было mysite.ru/page/, стало mysite.ru/page.
Для этого используйте набор команд в .htaccess:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
Подмена страниц на сервере
С помощью .htaccess можно проводить подмену страниц сайта на сервере. То есть пользователь открывает в браузере страницу mysite.ru/page1.html, а сервер вместо этой страницы отдает пользователю файл page2.html.Такую настройку можно получить с помощью кода в .htaccess:
Это “серая” методика, и мы рассказываем о ней, чтобы вы знали, как это делается, но мы не рекомендуем ее применять.RewriteRule ^page1\.html$ /page2.html [L]
Изменение страниц ошибок с помощью .htaccess
Если web-сервер не находит нужный файл (страницу) при запросе к сайту по определенному адресу, то он отвечает специальной ошибкой 404. Используемая по умолчанию страница с ошибкой 404 малоинформативна.
То же происходит в случае ошибок 400 (неправильный запрос), 500 (ошибка сервера) и других распространенных ошибочных состояний web-сервера.
Чтобы у пользователя было больше информации, можно настроить свои собственные страницы для обработки ошибок web-сервера с возможностью навигации по сайту. На странице может быть указано, что человек перешел по несуществующей ссылке, и предложение поискать нужную информацию на сайте, а не уйти с него.
Например, на сайте ru.hostings.info используется такая страница обработки ошибки 404.

Чтобы показывать пользователям сайта специальные страницы ошибок (404 и других) вместо стандартных, нужно создать файл для этой страницы (например, /404.html, /500.html) и добавить соответствующий код в файл .htaccess:
Если нужно указать специальную страницу для обработки ошибки 403 (“доступ запрещен”), то нужно будет указать также текстовое сообщение, которое будет показано посетителю:ErrorDocument 400 http://mysite.ru/400.html
ErrorDocument 404 http://mysite.ru/404.html
ErrorDocument 500 http://mysite.ru/500.html
ErrorDocument 403 "Access forbidden / Доступ запрещен"
Настройки безопасности сайта через файл .htaccess
Файл .htaccess предоставляет возможность фильтрации определенных запросов для обеспечения безопасной работы сайта. Ниже перечислены наиболее популярные из подобных фильтров для .htaccess:Защита сайта от атак
Эти фильтры могут быть дополнены, в зависимости от используемой CMS.#Включает отслеживание сим-ссылок
Options +FollowSymLinks
#Запускает url_rewriting
RewriteEngine On
#Блокирует все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокирует все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокирует все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправляет все подобные попытки на страницу с ошибкой 403 - запрещено
RewriteRule ^(.*)$ /403.html [F,L]
Web-сервер Apache с такой настройкой .htaccess начинает работать как программное обеспечение с функционалом Web Application Firewall (WAF).
Такая фильтрация не служит 100% гарантией защиты сайта, но в качестве одного из компонентов безопасности весьма полезна.
Блокировка доступа пользователей по IP
Применяется с целью защиты от:- спамеров;
- нежелательный посетителей.
Синтаксис .htaccess для блокировки следующий:
allow from all
#Список нежелательных IP адресов
deny from 164.186.15.116
deny from 124.153.34.144
Защита папок сайта паролем
.htaccess предоставляет возможность закрыть сайт или определенную папку сайта от доступа посетителей с помощью пароля. Это полезно, например, для ограничения доступа к панели администратора сайта.Синтаксис для .htaccess:
Предварительно следует создать файл с паролем при помощи команды:#Protect Directory
AuthName "Restricted access"
AuthType Basic
AuthUserFile /home/username/example.com/.htpasswd
Require valid-user
htpasswd -c /home/username/example.com/.htpasswd admin
Дополнительные сценарии использования .htaccess
Изменение главной (индексной) страницы сайта
При открытии сайта в браузере автоматически загружается страница index.html или index.php. Чтобы изменить эту настройку на использование индексного файла с названием, например, about.html, используется следующая команда в .htaccess:DirectoryIndex about.html
Защита сайта от кражи изображений
Защита авторского контента в Интернете - актуальная задача. При желании любой недобросовестный пользователь легко может узнать адреса понравившихся ему графических файлов, используемых на конкретном сайте, и вставить их в код страниц своего сайта.Для защиты от подобной кражи контента можно использовать такой код в .htaccess:
- это адрес (URL) изображения, которое специально создает владелец сайта. Оно содержит текст, наподобие "не крадите картинки с чужих сайтов", чтобы показать другим web-мастерам нежелательность использования графических файлов изображения с его сайта.Options +FollowSymlinks
#Запрещает кражу картинок
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?mysite.ru/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://mysite.ru/images/stop_stealing.gif[nc]
Запрет доступа к конкретному файлу
Чтобы запретить доступ к конкретному файлу на сайте, используйте следующие команды .htaccess:Защищает файл myfile.txt
<files myfile.txt>
order allow,deny
deny from all
</files>
Запрет доступа ко всем файлам с конкретным расширением
Если необходимо запретить доступ ко всем файлам с определенным расширением (типом), то применяйте следующий набор команд:В данном примере запрещается доступ ко всем файлам с расширением .txt<Files "\.(txt)$">
Order Deny,Allow
Deny from all
</Files>
Блокирование посетителей, в зависимости от заголовка User-Agent
User-Agent - это специальный заголовок протокола HTTP, с помощью которого браузер при запросе страницы указывает свое название и версию.Аналогично информацию о себе посылают на сервер клиентские приложения, различные поисковые роботы и пауки. С помощью User-Agent страница может также определить тип устройства пользователя.
Для блокировки доступа к сайту, в зависимости от заголовка User-Agent, используется следующий код в .htaccess:
#Перечень User Agent-ов для блокировки:
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get="" post="" head="">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>
Управление режимами работы сайта с помощью .htaccess
С помощью .htaccess можно управлять такими параметрами работы сайтов:- кодировка;
- сжатие;
- кэширование.
Изменение кодировки сайта через .htaccess
Точное указание кодировки страниц сайта важно для сайтов с контентом на других языках (не на английском). Чтобы браузер пользователя правильно отобразил содержимое страниц, в файле .htaccess указывается, в какой кодировке они созданы.В настоящее время для web-сайтов наиболее часто используется универсальная кодировка UTF-8, но встречаются страницы, созданные на кириллических кодировках Windows-1251 или KOI8-r.
Обычно кодировку указывают в метатегах заголовка HTML-кода страницы:
<meta http-equiv="content-type" content="text/html; charset=Windows-1251">
Если данный метатег не указан, то с помощью файла .htaccess можно сообщить браузеру, что он должен использовать для всех страниц сайта определенную кодировку:
Чтобы сервер автоматически перекодировал в нужную кодировку все файлы, которые на него загружаются, нужно применять следующие команды:AddDefaultCharset WINDOWS-1251
CharsetDisable on
CharsetSourceEnc WINDOWS-1251
Управление настройками сжатия
Включение сжатия со стороны сервера позволяет браузеру посетителя и серверу согласовать компрессию информации перед тем, как она будет отправлена пользователю. В итоге скорость загрузки страницы увеличится, а потребление сетевых ресурсов снизится за счет небольшого увеличения нагрузки на web-сервер.Чтобы включить Gzip-сжатие в файл .htaccess, в зависимости от настроек используемого хостинга, нужно добавить следующие команды:
или<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </ifmodule>
</IfModule>
Какой именно вариант лучше использовать на конкретном хостинге, можно проверить, сравнив скорость загрузки сайта при разных настройках.<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Настройка HTTP-кэширования на сервере
HTTP-кэширование файлов сайта в браузере посетителя позволяет сэкономить ресурсы канала связи и время пользователя за счет того, что статические файлы сайта (изображения, CSS-файлы, шрифты и др) после первого посещения сайта пользователем уже не загружаются повторно. Они хранятся в кэше браузера определенное время, которое настраивается в конфигурации web-сервера.Настроить HTTP-кэширование для сайта можно с помощью следующего кода в .htaccess:
В параметре "access plus X days" устанавливается конкретный срок хранения файлов на компьютере пользователя. По истечении этого срока при запросе к сайту файлы будут снова загружены с сервера.<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
</IfModule>
Оптимальный срок хранения файлов в кэше - от семи дней до месяца, в зависимости от конкретного типа файлов.
Настройка параметров PHP через файл .htaccess
Большинство web-сайтов используют язык программирования PHP. Для их работы важны определенные настройки PHP. Обычно за конфигурацию PHP отвечает файл php.ini, но часть параметров можно задать и через файл .htaccess.Для этого используются две команды:
- php_value name on/off - для логических значений (например, включить\выключить);
- php_flag name value - для установки числовых значений или текстовых значений.
Для установки значения флага PHP register_globals в значение off используется команда:php_flag name1 on # включает параметр конфигурации PHP name1
php_flag name2 off # выключает параметр конфигурации PHP name2
php_value name value #устанавливает параметр PHP name в значение value
Другие полезные конфигурационные параметры PHP, которыми можно управлять через .htaccess:php_flag register_globals off
Для использования с php_flag
- display_startup_errors - управляет выводом на экран ошибок, которые происходят при инициализации PHP.
- display_errors - управляет выводом на экран ошибок PHP.
- log_errors - управляет записью лога ошибок PHP в файл.
- error_log - устанавливает название файла лога ошибок PHP.
- output_buffering - управляет буферизацией вывода данных.
- upload_max_filesize - устанавливает максимальный размер загружаемого файла.
- post_max_size - задает максимальный размер пересылаемой почты.
- sendmail_from - задает адрес e-mail для отправки почты с помощью PHP.
- auto_prepend_file - задает файл, который будет добавлен в начало каждого PHP-скрипта.
- auto_append_file - задает файл, который будет добавлен в конец каждого PHP-скрипта.
Источник статьи: https://ru.hostings.info/schools/htaccess.html