Назад | Перейти на главную страницу

apache .htaccess перенаправляет на одну ссылку, но не на другую

У меня есть этот файл .htaccess (это был тот, который был в laravel. Единственные изменения, которые я сделал, - это принудительное использование https в URL-адресе и коде, показанном ниже:

 <IfModule mod_rewrite.c>
     <IfModule mod_negotiation.c>
         Options -MultiViews -Indexes
     </IfModule>

    ...

     RewriteEngine On

    ...

     # This block works perfectly
      RewriteCond %{REQUEST_URI} ^(/phpmyadmin.*)$
      RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
      RewriteRule ^(.*)$ /404 [R=301,L]

      # This block doesnt
      RewriteCond %{REQUEST_URI} ^(/processor.*)$
      RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
      RewriteRule ^(.*)$ /404 [R=301,L]

 </IfModule>

Я хочу добиться того, чтобы некоторые из моих страниц были заблокированы по IP. Я добился этого с помощью первого блока выше.

Второй блок не работает на блокировку всех IP-адресов, кроме указанного, когда он ТОЧНО такой же. Он по-прежнему доступен для публики.

Вы разместили "блокирующие" директивы не в том месте - их нужно удалить перед фронт-контроллер Laravel (который, похоже, вы пропустили), который предположительно предшествует этим директивам.

Первый блок «работает», потому что URL-адреса формы /phpmyadmin предположительно сопоставляются с физическими файлами, тогда как /processor URL-адреса не являются (т. Е. «Виртуальными»). Предположительно, вы маршрутизируете все «виртуальные» URL-адреса через Laravel, поэтому любые последующие директивы mod_rewrite просто игнорируются. (?)