Правки в .htaccess, при переходе на Apache2.4

При очередном обновлении WordPress пришлось также сменить версию сервера Apache. И «неожиданно» многое перестало работать, в частности директивы доступа к хостингу.

Оказывается при переходе на веб-сервер Apache2.4 с Apache2.2 необходимо внести ряд исправлений в файл .htaccess, т.к. разрешающие и запрещающие директивы в новой конфигурации Apache используют другой синтаксис. Правила order, deny, allow, сто лет как прописанные в .htaccess больше не работают.

Запретить или разрешить всё:

Apache 2.2 Apache 2.4
Order deny,allow

Deny from all

Require all denied
Order allow,deny

Allow from all

Require all granted

 

Запретить или разрешить всё с опред. хоста или ip-адреса:

Apache 2.2 Apache 2.4
Order Allow,Deny

Allow from all

Deny from example.com

<RequireAll>

Require all granted

Require not host example.com

</RequireAll>

Order Allow,Deny

Allow from all

Deny from 111.111.111.111

<RequireAll>

Require all granted

Require not ip 111.111.111.111

</RequireAll>

 

Можно объединять директивы по хосту или ip-адресу в один блок, например:

Require not ip 192.168.205

Require not host phishers.example.com moreidiots.example

Require not host gov

 

Запретить или разрешить доступ к опред. файлу с ip-адреса:

Apache 2.2 Apache 2.4
<Files ПУТЬ_К_ФАЙЛУ>

Order Allow,Deny

Allow from all

Deny from 111.111.111.111

</Files>

<Files ПУТЬ_К_ФАЙЛУ>

<RequireAll>

Require all granted

Require not ip 111.111.111.111

</RequireAll>

</Files>

<Files ПУТЬ_К_ФАЙЛУ>

Order Deny,Allow

Deny from all

Allow from 111.111.111.111

</Files>

<Files ИМЯ_ФАЙЛА>

Require ip 77.222.44.126

Require ip 123.123.123.123

</Files>

 

Блокировка ботов:

Apache 2.2 Apache 2.4
SetEnvIfNoCase User-Agent «AESOP_com_SpiderMan» bad_bot

SetEnvIfNoCase User-Agent «AhrefsBot» bad_bot

Order Allow,Deny

Allow from all

Deny from env=bad_bot

<If «%{HTTP_USER_AGENT} =~ m#BadBot#i»>

Require all denied

</If>

Или

Require expr %{HTTP_USER_AGENT} != ‘BadBot’

 

Запрет доступа на основе произвольных критериев:

RewriteEngine On

RewriteCond «%{TIME_HOUR}» «>=20» [OR]

RewriteCond «%{TIME_HOUR}» «<07»

RewriteRule «^/dayonly»     «-» [F]

Это правило запрещает доступ с 8 вечера до 7 утра к разделу dayonly.

NB Если доменное имя вашего сайта кириллическое, то указывать имя в .htaccess нужно в кодировке Punycode!

p.s. Не пинайте гуманитария, как понял, так и рассказал.

Источник мудрости 1 и Источник мудрости 2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.