WordPress站点URL重定向由谁处理?两种重定向配置失效原因是什么
WordPress URL请求处理顺序及重定向失效原因
请求处理优先级
访问WordPress站点的URL时,请求会先由Apache服务器层处理,再到WordPress应用层:
- Apache首先读取站点目录下的
.htaccess配置,匹配规则执行操作,同时会判断请求对应的路径是否为真实存在的物理文件/文件夹 - 只有当请求路径没有对应真实物理资源时,Apache才会通过WordPress默认的重写规则,将请求交给WordPress内核处理,此时Redirection这类WP插件的重定向规则才会生效
两种重定向方案失效的原因
- Redirection插件失效:你站点的
/downloads/files/是真实存在的物理文件夹,Apache匹配到该路径后,发现路径下没有sitemap.xml文件会直接返回404,不会把请求交给WordPress处理,因此插件规则完全不会触发 .htaccess规则失效:通常有两个常见原因:- 你把
Redirect 301规则写在了WordPress默认的# BEGIN WordPress重写规则块之后,Apache执行时会优先走后面的WP重写规则,覆盖了你写的重定向规则 /downloads/files/文件夹下存在独立的.htaccess文件,Apache读取.htaccess时会优先使用下级目录的配置,覆盖根目录的规则
- 你把
可行解决方法
- 调整根目录
.htaccess规则顺序:把重定向规则写在# BEGIN WordPress块之前,也可以改用更稳定的mod_rewrite写法:
RewriteEngine On RewriteRule ^downloads/files/sitemap.xml$ /sitemap.xml [L,R=301]
- 直接在
/downloads/files/文件夹下新建.htaccess文件,写入上述重定向规则,优先级最高不会被其他规则覆盖 - 也可以直接在
/downloads/files/目录下放置一份和根目录一样的sitemap.xml文件,无需重定向即可正常访问
内容的提问来源于stack exchange,提问作者alancc
相关产品推荐
相关产品推荐

