通过.htaccess实现WordPress无查询字符串的301重定向报错问题
问题解决:修复.htaccess重定向导致的500错误
你的规则出错的原因:
- 多个
RewriteCond默认是AND逻辑,你写的条件要求查询字符串同时以t=、u=、f=开头,这根本不可能满足,所以第一条规则完全没用。 - 第二条规则里的目标URL多打了一个
h(写成hhttps://),属于无效地址,而且这条规则会匹配所有请求,导致无限循环重定向,直接触发500错误。
正确的.htaccess规则写法
把下面的规则放在WordPress自带的规则之前(WordPress的规则通常是从# BEGIN WordPress开始的):
RewriteEngine On # 匹配?t=、?u=、?f=开头的查询字符串,重定向到主站并清除查询参数 RewriteCond %{QUERY_STRING} ^t= [OR] RewriteCond %{QUERY_STRING} ^u= [OR] RewriteCond %{QUERY_STRING} ^f= RewriteRule ^ https://efhamcomputer.com/? [R=301,L]
规则说明:
[OR]标记让多个RewriteCond变成或逻辑,只要查询字符串以t=、u=、f=其中一个开头,就触发重定向。- 目标URL末尾的
?用来清除查询字符串,确保重定向后地址不带任何参数。 R=301是永久重定向,适合SEO优化;如果只是临时测试,可以改成R=302。L标记表示这是最后一条规则,匹配后不再执行后续规则,避免和WordPress的规则冲突。
注意事项:
- 不要删除WordPress自带的
.htaccess规则,自定义规则一定要放在# BEGIN WordPress之前。 - 修改
.htaccess后,最好清空浏览器缓存再测试,避免旧的重定向缓存干扰结果。 - 如果还是有问题,检查服务器是否开启了
mod_rewrite模块(大多数主机默认是开启的)。
内容的提问来源于stack exchange,提问作者amr selim
相关产品推荐
相关产品推荐

