我在 Windows Server 上,已安装xampp,并且“C:/xampp/htdocs/”是我的根目录。在该根目录下,我有多个项目,比如 p1、p2、p3。

现在对于特定目录,我已向我的网络之外的其中一个供应商提供了访问权限,他正在使用

供应商 IP 地址已在我的防火墙列入白名单,并且供应商仅从特定 IP访问

现在我的问题是供应商还可以使用 URL 访问项目 p2、p3 等。

我想仅允许访问供应商我知道我可以htaccess在其他项目目录 p2、p3 中添加以禁止供应商 IP。但我的根目录中有数百个项目。因此,我不想在每个项目目录中添加 htaccess,而是想在根目录中添加 htaccess,以检查 IP 是否属于供应商,然后仅允许 /p1/ 目录,对于其他目录,它应该返回 403 forbidden to vendor。

这可以实现吗?我在网上做了一些研究,没有找到任何解决方案。


最佳答案
1

类似这样的方法应该可行,但我还没试过

<IfModule mod_rewrite.c>
    RewriteEngine On        
    SetEnvIf Remote_Addr "^ALLOWED_IP_GOES_HERE$" ALIAS_IP    
    RewriteCond %{REQUEST_URI} ^/p1/ [NC]
    RewriteRule .* - [L]    
    RewriteCond %{ENV:ALIAS_IP} ^1$
    RewriteRule .* - [F]
</IfModule>

3

  • 1
    存在并且在官方 Apache文档中推荐时,为什么要使用作为 ACL


    – 

  • 为什么要使用 Apache 自己的文档中不推荐的 htaccess,而是建议将指令放入主配置中?


    – 

  • 我想我很糟糕,或者老了,或者也许我有 20 年的经验,并且我不会优先考虑 Stackoverflow 中带有 170 个问题的模块而不是带有 24,778 个问题的模块。


    –