@Q_BASIC
Программист

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

Приветствую,

У меня стоит 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 отсюда https://www.cloudflare.com/ips/

У меня получился такой htaccess
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?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы