You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server下XAMPP多项目场景中,如何仅允许指定IP访问特定项目并禁止其访问其他项目

Windows Server下XAMPP多项目场景中,如何仅允许指定IP访问特定项目并禁止其访问其他项目

嗨,我来帮你解决这个问题!你已经通过防火墙白名单让供应商能访问你的服务器,但现在需要限制他们只能访问p1项目,不能碰p2、p3这些,而且不想每个项目都加.htaccess对吧?这里有两个更高效的方案,不用逐个项目配置:

方案一:利用根目录的.htaccess统一配置

既然所有项目都在C:/xampp/htdocs/下,咱们可以直接在根目录的.htaccess文件里写规则,一次性搞定权限限制,不用给每个项目单独加配置。

创建或修改C:/xampp/htdocs/.htaccess,添加以下内容(记得替换成供应商实际的IP地址):

# 标记供应商的IP为特殊环境变量
SetEnvIF RemoteAddr "^192\.168\.1\.100$" VENDOR_IP

# 允许供应商访问p1目录下的所有内容,同时保留其他用户的访问权限
<Directory "C:/xampp/htdocs/p1">
    Require env VENDOR_IP
    Require all granted
</Directory>

# 拒绝供应商访问根目录下的其他所有内容,允许正常用户访问
<Directory "C:/xampp/htdocs/">
    Require not env VENDOR_IP
    Require all granted
</Directory>

配置说明:

  1. SetEnvIF会把匹配到的供应商IP标记为VENDOR_IP环境变量,方便后续规则引用;
  2. Apache的目录规则会优先匹配最具体的路径,所以p1的允许规则会覆盖根目录的拒绝规则,供应商能正常访问p1;
  3. 其他项目(p2、p3)会触发根目录的拒绝规则,供应商访问时会得到403 Forbidden,而正常用户不受影响。

方案二:使用Apache虚拟主机配置(更推荐)

如果你的服务器用的是虚拟主机(从你用域名访问来看应该是),直接修改Apache的虚拟主机配置会比.htaccess更高效(因为.htaccess是每次请求都解析,虚拟主机配置是Apache启动时加载的)。

步骤如下:

  1. 打开XAMPP控制面板,点击Apache的Config按钮,选择Apache (httpd.conf);
  2. 找到#Include conf/extra/httpd-vhosts.conf这一行,去掉前面的#,开启虚拟主机配置;
  3. 打开C:/xampp/apache/conf/extra/httpd-vhosts.conf,添加以下配置(替换IP和SSL证书路径):
<VirtualHost *:443>
    ServerName example.com
    DocumentRoot "C:/xampp/htdocs"
    
    # 如果你用的是HTTPS,需要配置SSL证书(根据你的实际证书路径修改)
    SSLEngine on
    SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
    
    # 允许所有人访问p1项目
    <Location "/p1">
        Require all granted
    </Location>
    
    # 拒绝供应商IP访问除p1外的所有路径,允许其他用户正常访问
    <Location "/">
        Require not ip 192.168.1.100
        Require all granted
    </Location>
</VirtualHost>

注意事项:

  • 如果供应商有多个IP,可以写成Require not ip 192.168.1.100 192.168.1.101;
  • 如果你用的是HTTP而不是HTTPS,把<VirtualHost *:443>改成<VirtualHost *:80>,并去掉SSL相关的配置;
  • 修改完配置后,一定要重启Apache才能生效;
  • 测试时用供应商的IP访问p2,应该会返回403错误,访问p1则正常。

额外检查

确保Apache的以下模块已经启用(在httpd.conf里找,没有注释掉):

  • LoadModule setenvif_module modules/mod_setenvif.so(方案一需要)
  • LoadModule authz_core_module modules/mod_authz_core.so(两个方案都需要)

备注:内容来源于stack exchange,提问作者utsav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:59:42