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

HTAccess规则导致sitemap.xml无法正常加载的问题求助

解决sitemap.xml被HTAccess错误重写的问题

嘿,我完全懂你碰到的这个坑——现在你的Rewrite规则会把所有请求一股脑转发到index.php,哪怕是像sitemap.xml这种真实存在的静态文件,自然就会返回那个空白的动态页面了。

解决起来很简单,只需要给重写规则加两个前置条件,告诉Apache跳过对真实存在的文件和目录的重写就行。具体操作如下:

  1. 在RewriteEngine on之后、你的原有重写规则之前,插入这两行条件:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    • !-f 意思是:如果请求的路径不是一个已经存在的文件
    • !-d 意思是:如果请求的路径不是一个已经存在的目录
  2. 把你的重写规则放在这两个条件之后,这样只有当请求的内容不是真实存在的文件/目录时,才会触发重写逻辑。

修改后的完整HTAccess示例大概是这样的:

RewriteEngine on

##### Security #####
## Keep people out of .inc files
<files *.inc.php>
    order allow,deny
    deny from all
</files>

# 新增:排除真实存在的文件和目录,避免静态资源被错误重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 你的原有重写规则(根据实际需求调整,这里匹配无后缀路径转成page_url参数)
RewriteRule ^([^\.]+)$ index.php?page_url=$1 [NC,L]

调整之后,访问sitemap.xml时,Apache会直接返回这个真实存在的文件,不会再把它转发到index.php了。而且其他类似的静态资源(比如robots.txt、图片、CSS文件)也会自动被排除在外,不会受到重写规则的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:37:57