我有这个 .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 地址完全相同。它仍然可供公众使用。
您将“阻塞”指令放在错误的位置 - 它们需要放在Laravel 前端控制器(您似乎已省略)之前,可能在这些指令之前。
第一个块“有效”,因为表单
/phpmyadmin
的 URL 可能映射到物理文件,而/processor
URL 不是(即“虚拟”)。您可能正在通过 Laravel 路由所有“虚拟” URL,因此后面的任何 mod_rewrite 指令都会被忽略。(?)