WordPress站点获取URL中r和s双参数的问题求助
解决WordPress中带特殊字符的URL参数触发404的问题
你的问题核心是s参数值里包含/、+这类特殊字符,WordPress的固定链接规则会把这些字符后的内容误判为URL路径的一部分,从而跳转到404页面,而不是把它当作查询参数处理。下面是几个可行的解决办法:
方法一:修改.htaccess规则强制解析参数
在站点根目录的.htaccess文件中,找到WordPress默认的Rewrite规则块,在RewriteRule ^index\.php$ - [L]之前,添加以下规则:
RewriteRule ^simplepay-cancel/?$ /simplepay-cancel/index.php [L]
这条规则会直接将/simplepay-cancel/路径指向对应的PHP文件,让服务器不再把参数里的特殊字符解析为路径部分。
方法二:注册合法的查询变量
在当前主题的functions.php文件中添加以下代码,把r和s注册为WordPress认可的查询变量:
add_filter('query_vars', 'add_custom_payment_vars'); function add_custom_payment_vars($vars) { $vars[] = 'r'; $vars[] = 's'; return $vars; }
之后你就可以用WordPress的标准函数获取参数:
if (get_query_var('r') && get_query_var('s')) { echo 'Hello'; }
当然直接用$_GET['r']和$_GET['s']也能正常工作,但使用WordPress内置函数更符合开发规范。
方法三:临时切换固定链接模式
如果只是临时测试,可以在WordPress后台「设置」→「固定链接」里选择「朴素」模式(即类似?p=123的URL格式),这种模式下查询参数不会被误判,但会影响URL的美观性,适合快速验证问题。
注意事项
- 修改
.htaccess前一定要备份原文件,避免操作错误导致站点无法访问。 - 如果站点使用了缓存插件,修改规则后需要清空缓存,确保新规则生效。
内容的提问来源于stack exchange,提问作者Márton Stark
相关产品推荐
相关产品推荐

