Использование .htaccess

Включение поддержки файла .htaccess

Параметр,опредлеяющий имя файла .htaccess в конфигурационном файле Apache
AccessFileName

Например, для Debian/Ubuntu

Включение поддержки файла .htaccess возможно

Либо в конфигурационном файле Apache – глобально для каталога, внутри которого размещаются все сайты.
Например, для Debian/Ubuntu

Либо в конфигурацаионном файле конкретного виртуального хоста Apache
(что более предпочтительно)
Например, для Debian/Ubuntu

Сама директива AllowOverride определяет директивы, разрешенные для использования в файле .htaccess.
Установим ее значение в All для возможности переопределения всех поддерживаемых параметров
Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется применять настройки.
Настройки в файле .htaccess будут действовать также и на все подкаталоги.
В каждом подкаталоге может быть свой файл .htaccess, в котором можно переопределить настройки, указанные в файле .htaccess на верхних уровнях

Проверка синтаксиса и перезапуск Apache

 

1.Ограничение доступа к файлу/файлам/каталогам(необходимо включить модуль auth_basic_module)

Создание  внутри каталога, к которому необходимо ограничить доступ, файла .htaccess с одним из указанных ниже содержимым

a)По логину/паролю

Создание файла с логином/паролем

Добавление нового пользователя

Удалить пользователя можно просто редактированием файла .htpasswd, удалив строку с его логином и хешем пароля.
Отредактировать пароль – так же, как создавался пользователь(но без опции -с)

Если необходимо предоставить доступ определенным пользователям, а не всем пользователям в файле .htpasswd, то вместо

Используем/указываем конкретные имена пользователей через пробел

Если необходимо дать доступ нескольким пользователям, то можно использовать группы
Пользователи добавляются в группы и доступ разрешается группам
Например, предоставим доступ пользователям (admin1 и user1), состоящих в группах admins и users

Создадим пользователей admin1 и users1

 

b)По IP-адресам
В зависимости от того в каком порядке указаны директивы меняется логика работы сервера. В случае если Deny,Allow то запрещается доступ со всех IP кроме оговоренных
В случае если Allow,Deny разрешается доступ со всех IP кроме оговоренных.
Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP

Запретить доступ для всех, кроме указанных адресов/подсетей

Запретить доступ с конкретных адресов/подсетей

Директива Satisfy определяет способ взаимодействия директив идентификации (используемые для защиты паролем) с директивами доступа (например, Allow/Deny).
С ее помощью вы, например, можете заставить Apache выполнять те запросы, которые удовлетворяют только требованиям идентификации, либо только требованиям доступа.
Или вы можете сделать, чтобы запрос удовлетворял всем требованиям.
Директива Satisfy принимает два значения:

Пропускает запрос, если выполнено ЛЮБОЕ из требований (идентификация или проверка доступа)

Пропускает запрос, только если ОБА требования выполнены (и идентификация и проверка доступа).

Разрешить доступ либо по логину/паролю ИЛИ с указанных IP-адресов(для доступа достаточно выполнения ОДНОГО ИЗ УСЛОВИЙ (либо первого условия(логина/пароля) либо второго условия(указанного IP-адреса))

Разрешить доступ либо по логину/паролю И с указанных IP-адресов(для доступа требуется выполнение ОБОИХ УСЛОВИЙ( как логина/пароля так и с указанного IP-адреса)

Аналогично все выше указанные условия можно применить как для всех файлов, так и для одного или множества файлов
Например, запретить достyп для всех файлов с указанным расширением

Запретить доступ к одному файлу

 

2. Определение опций PHP

Для работы с PHP в конфигурационных файлах Apache доступны 4 директивы:

которые отличаются значимостью, типом устанавливаемых значений и местом применения.

Директивы

выставляются только в глобальном конфигурационном файле Apache и не могут задаваться через файл .htaccess. По сути, данные директивы переопределяют значение остальных директив.
Директива php_flag служит для установки логических значений директив в php.ini, в то время как директива php_value служит для установки строковых и числовых значений директив php.ini, т.е. любых типов значений, за исключением логических.
Директивы php_flag и php_value могут быть установлны в файле .htaccess

Синтаксис директив

Определение параметров для
максимального размера закачиваемого файла(upload_max_filesize),
максимально допустимого размера данных, отправляемых методом POST(post_max_size),
максимального времени в секундах выполнения скрипта(max_execution_time), максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET(max_input_time),
максимальный объем памяти , который может использовать скрипт(memory_limit),
максимальный размер передаваемых переменных(max_input_vars)

Включение отображения ошибок

Запрет выполнения php-скриптов в текущей директории

 

3.Перенаправления (требуется включения модуля mod_rewrite)

 

Перенаправление со старого домена на новый

 

Перенаправление домена без www на с www

Для любого домена

Для домена example.com

 

Перенаправление домена с www на без www

Для любого домена

Для домена example.com

 

Постоянное перенаправление с example.com на domain.com

Временное перенаправление с example.com на domain.com

 

Постоянное перенаправление домена example.com и домена www.example.com на домен domain.com

 

Перенаправление с HTTP на HTTPS для домена example.com

Либо

 

Тестирование пернеправлений

htaccess tester
http://htaccess.madewithlove.be

 

Блокировка посетителей, перешедших с определенного домена
Пользователей с нежелательных ресурсов будут перенаправены на страницу 403 Forbidden
Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [NC, OR] для каждого домена, если же вы хотите запретить использование одного домена — используйте только флаг [NC].

 

4. Защита сайта от вставки изображений с других ресурсов(HotLink)

 

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

 

6.Включение GZIP-сжатия (требуется установленный модуль mod_deflate)
Сжатие передаваемых файлов. Данное сжатие положительно влияет на передаваемый трафик (снижая его количество) и как результат, повышается скорость работы сайта в целом, но приводит к большей нагрузке на процессор сервера.

Проверка поддержки сжатия
http://www.whatsmyip.org/http-compression-test
http://highloadtools.com/gzip

 

7. Включение/отключение кеша, установка срока жизни в заголовках (требуются установленные модули mod_expires, mod_headers)
Позволяет увеличить скорость загрузки сайта, при его повторном посещение потому, что браузер сохранить все схожие элементы на компьютер и при повторной загрузке сайта, будет обращаться к компьютеру, а не к серверу.
Например, укажем срок кеширования, это «access plus». При необходимости, можно установить более длительный срок действия. Также разрешается выставлять кэширование по последнему изменению в файле(modification plus) или по времени последнего доступа клиента.

Файлы с указанным расширением будут кешироваться браузером клиента на 30 дней со дня обращения к файлу на сайте.

 

Файлы с расширением .(ico|png|jpeg|svg|ttf) будут кешироваться на 1 час(3600 секунд), а файлы с расширением .(js|css) до указанной даты

Отключение кеширования файлов с указанным разрешением

Проверка включения кеширования и установки срока жизни в заголовках можно через расширение Firebug либо интсрументы Веб-разработки в Mozilla/Google Chrome

 

8. Изменение интерпретатора, который обрабатывает файлы/скрипты
Выполнение скриптов (Perl(.pl), PHP(.php), Python(.py)) как текстовых файлов(только отображать содержимое файла) , а не как cgi-скриптов

Установка обработки .html и .htm файлов php-интерпретатором и убрать с обработки как файлов с гипертекстовой разметкой

 

9.Разрешить выполнение CGI-скриптов за пределами cgi-bin каталога
В каталоге, в которой должны выполняться скрипты CGI, создайте файл .htaccess

 

10.Запрет и разрешение выдачи листинга(списка каталогов/файлов)
По умолчанию включена директива

и в случае отсутствия индексной страницы ответ сервера выдаст HTTP ошибку 403
При необходимости вывода списка каталогов/файлов при отсутствии индексной страницы используем директиву

Разрешить просматривать список файлов, но при этом чаcть файлов определенного формата не отображается
Выдается листинг каталога, т.е. его содержание со всем содержанием, за исключением файлов-скриптов PHP и Perl.

 

11.Блокировка запросов с нежелательных User Agents

Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте http://www.user-agents.org

 

12. Создание собственных страниц ошибок
Необходимо создать в корневом каталоге сайта каталог «error» и разместить в нем соответствующие файлы.

 

13.Смена кодировки(таблицы символов) по умолчанию
Иногда браузер пользователя не может корректно определить тип кодировки выдаваемого документа.
Например, допустимая кодировка для сайта это UTF-8, браузер же выбирает кодировку windows-1251 для чтения открываемых сайтов в результате чего браузер из-за неправильной кодировки выдает пользователю информацию в виде нечитабельных символов.
Для принудительной установки кодировки UTF-8

Если,например, необходимо принудительно установить кодировку windows-1251, то используем

 

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

Либо


15.Включение страницы обслуживания

 

Источник:
http://www.linuxrsp.ru/artic/25_htaccess_rules.html
https://habrahabr.ru/post/165701
https://www.tecmint.com/apache-htaccess-tricks
https://masterhost.ru/support/doc/apache/
https://beget.com/ru/articles/htaccess#mod_rewrite

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика