Конфликт RewriteEngine и Order deny,allow

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

У меня стоит CodeIgniter, в котором все запросы, если нет такого файла или каталога, идут на index.php. Например, можно открыть site.ru/register - его обработает index.php, в котором уже роутинг.

Код:
RewriteEngine On

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Так же я подключил CloudFlare и мне надо заблокировать все подключения, кроме IP отсюда Для просмотра ссылки Войди или Зарегистрируйся

У меня получился такой htaccess
Код:
Order deny,allow
Deny from all

Allow from 103.21.244.0/22
Allow from 103.22.200.0/22
Allow from 103.31.4.0/22
Allow from 104.16.0.0/12
Allow from 108.162.192.0/18
Allow from 131.0.72.0/22
Allow from 141.101.64.0/18
Allow from 162.158.0.0/15
Allow from 172.64.0.0/13
Allow from 173.245.48.0/20
Allow from 188.114.96.0/20
Allow from 190.93.240.0/20
Allow from 197.234.240.0/22
Allow from 198.41.128.0/17

Allow from 2400:cb00::/32
Allow from 2405:8100::/32
Allow from 2405:b500::/32
Allow from 2606:4700::/32
Allow from 2803:f800::/32
Allow from 2c0f:f248::/32
Allow from 2a06:98c0::/29

RewriteEngine On

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Но если запросы идут на существующий файл, то всё работает и видим код 200.

А если попытаться обратиться к CodeIgniter, например, к тому же site.ru/register, то видим 403.
Если сделать RewriteEngine Off, то видим код 404, что нет файла register. Да, его нет, но уже нет 403.
Если открыть существующий файл, например, site.ru/assets/style.css - то во всех случаях 200

Так же если принудительно указать index.php, например, site.ru/index.php/register - то тоже во всех случаях 200.

Как совместить RewriteEngine и Order deny,allow?
 
Тогда магия какая-то. Должно бы блокировать быз всяких вопросов...
 
Попробуйте так:
PHP:
RewriteEngine On

RewriteCond expr "! -R '103.21.244.0/22'"
RewriteCond expr "! -R '104.16.0.0/12'"
...............

RewriteCond expr "! -R '198.41.128.0/17'"
RewriteCond expr "! -R '2a06:98c0::/29'"
RewriteRule ^(.*) https://google.com/ [L,R=302]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
У меня работает
 
Последнее редактирование:
Назад
Сверху