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

多域名场景下基于站点地图文件名的.htaccess规则问询

解决方案:用.htaccess阻止跨域名访问站点地图并校验文件名域名

完全可以通过Apache的.htaccess规则实现这个需求——既阻止跨域名访问不属于当前站点的sitemap文件,又能校验文件名中指定的域名是否与访问的主机名匹配。

核心思路

我们需要对比用户访问的域名(HTTP_HOST)和sitemap文件名中包含的域名:如果两者不匹配,就返回禁止访问的状态码(比如403 Forbidden)。

具体的.htaccess规则

将以下代码添加到你的.htaccess文件中(放在网站根目录下):

RewriteEngine On

# 1. 捕获sitemap文件名中的完整域名(比如www.seconddomain.com)
RewriteCond %{REQUEST_URI} ^/sitemap/(www\.[a-z0-9-]+\.[a-z]+)\.xml$ [NC]
# 2. 检查当前访问的域名是否与捕获的域名不匹配
RewriteCond %{HTTP_HOST} !^%1$ [NC]
# 3. 不匹配则返回403禁止访问
RewriteRule ^ - [F,L]

规则详解

  • RewriteEngine On:开启URL重写功能(确保你的Apache服务器已启用mod_rewrite模块)。
  • 第一条RewriteCond:匹配请求的URI是否为sitemap/目录下的目标XML文件,并捕获文件名中的完整域名(比如www.seconddomain.com)。[NC]表示不区分大小写,兼容可能的域名大小写差异。
  • 第二条RewriteCond:判断当前访问的域名(HTTP_HOST)是否与捕获的域名不匹配。!^%1$中的%1指代第一条规则捕获的域名。
  • RewriteRule ^ - [F,L]:如果上述条件满足,返回403 Forbidden([F]标记),并停止后续规则执行([L]标记)。

可选调整

如果你希望返回404 Not Found而非403,只需把[F,L]改成[R=404,L]即可:

RewriteRule ^ - [R=404,L]

测试验证

你可以用curl命令快速测试规则是否生效:

  • 访问跨域名的sitemap:curl -I http://www.firstdomain.com/sitemap/www.seconddomain.com.xml,应该返回403 Forbidden(或404)。
  • 访问自身域名的sitemap:curl -I http://www.firstdomain.com/sitemap/www.firstdomain.com.xml,应该返回200 OK。

内容的提问来源于stack exchange,提问作者Florent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:20:56