Я хочу полностью отказаться от доступа к некоторым IP-адресам на моем веб-сайте. Кроме того, я хотел бы запретить доступ для некоторых других IP-адресов только к определенному файлу. Проблема в том, что второе правило, похоже, переопределяет первое.Объединить несколько правил FilesMatch в htaccess
<FilesMatch "">
order allow,deny
allow from all
deny from 1.1.1.1
</FilesMatch>
<FilesMatch "^file\.exe$">
order allow,deny
allow from all
deny from 2.2.2.2
</FilesMatch>
В этом раздели вниз пример 1.1.1.1 будет иметь доступ к file.exe хотя он был фактически блокирован первым правилом.
Ожидаемый результат: 1.1.1.1 не имеет доступа ко всему (включая файл.exe), 2.2.2.2 имеет доступ к веб-сайту, но не файл.exe.
Что я делаю неправильно?
Ну, у меня тоже была эта мысль, но 1.1.1.1 - всего лишь короткий пример. На самом деле есть живой список из 20 строк + комментарии. Я определенно не хочу создавать избыточность здесь, которая должна поддерживаться синхронно. Кроме того, ваш второй пример, скорее всего, не хватает вашей предложенной строки. Помимо того, что это исключает область FilesMatch, каким-то образом кажется, что это мешает остальному файлу htaccess. Вместо 403 я получаю ERR_TOO_MANY_REDIRECTS. Но это лишь побочный узел, указывающий на то, что пустой FileMatch каким-то образом имеет смысл. – CodeX
Проблема с перенаправлением связана с 'ErrorDocument 403 /' - я удалил это для тестирования и найду другое решение для этого, если я смогу заставить ваше предложение работать. Проблема с вашим вторым предложением состоит в том, что он, по-видимому, неявно переопределяет оператор allow, поэтому file.exe можно получить из 1.1.1.1. Вы можете заменить это на 127.0.0.1 или :: 1, чтобы легко попробовать это локально самостоятельно, если вы как. – CodeX