apache .htaccess 在一个链接上重定向,但没有在另一个链接上重定向

apache .htaccess 在一个链接上重定向,但没有在另一个链接上重定向

我有这个 .htaccess 文件(这是 laravel 附带的文件。我所做的唯一更改是在 URL 中强制使用 https,代码如下所示:

 <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 地址之外的所有 IP 地址(如果指定 IP 地址完全相同)。它仍可供公众访问。

答案1

你把“阻止”指令放在了错误的地方——它们需要被移除Laravel 前端控制器(您似乎已省略)可能位于这些指令之前。

第一个块“有效”,因为表单的 URL/phpmyadmin可能映射到物理文件,而/processorURL 则不是(即“虚拟”)。您可能通过 Laravel 路由所有“虚拟”URL,因此后面的任何 mod_rewrite 指令都将被忽略。(?)

相关内容