如何通过.htaccess禁止访问sitemap.php仅允许访问sitemap.xml
实现方案
你可以在现有.htaccess规则的基础上新增一条基于原始请求的重写规则,只拦截外部直接访问sitemap.php的请求,不会影响sitemap.xml到sitemap.php的内部重写逻辑。
完整配置如下
RewriteOptions InheritBefore RewriteEngine On # 原有规则:将sitemap.xml请求内部转发到sitemap.php RewriteRule ^sitemap.xml$ sitemap.php [L] # 新增规则:禁止外部直接访问sitemap.php RewriteCond %{THE_REQUEST} /sitemap\.php [NC] RewriteRule ^sitemap\.php$ - [F,L]
规则说明
%{THE_REQUEST}是Apache内置的原始请求变量,存储用户浏览器发起的原始请求头内容,内部重写操作不会修改这个值,因此只有用户主动请求sitemap.php时才会触发拦截[NC]标识匹配路径时不区分大小写[F]标识命中规则后返回403 Forbidden禁止访问状态码[L]标识命中该规则后终止后续所有重写规则执行
生效后效果
- 访问
domain.com/news/sitemap.xml完全正常,和之前的效果一致 - 直接访问
domain.com/news/sitemap.php会返回403错误,不会泄露任何站点敏感信息
内容的提问来源于stack exchange,提问作者test
相关产品推荐
相关产品推荐

