我的问题与问题#44117基本相同。我有一个使用add\\u rewrite\\u规则的自定义重写规则集,但当用户转到该页面时,输入的url会更改,并且值会丢失。
用户输入:成员资格/成员配置文件/配置文件名称/
并转发至:会员/会员档案/
以下是我的重写代码:
function profile_rewrite() {
add_rewrite_rule(\'membership/member-profile/([^/]+)/?\', \'index.php?pagename=member-profile&profile=$matches[1]\', \'top\');
}
add_action(\'init\', \'profile_rewrite\');
我已经研究了几个小时,虽然我发现其他人也有类似的问题,但从来没有一个明确的解决方案。
也许是我的Wordpress设置有问题?如果我输入URL:
指数php?pagename=成员配置文件(&N);剖面=测试
我被转发至:
会员资格/会员档案/?pagename=成员配置文件(&N);剖面=测试
返回404错误。
提前感谢您的帮助。我对Wordpress这个东西还很陌生,也许我跳得有点太快了。
最合适的回答,由SO网友:Milo 整理而成
这是:
add_rewrite_rule(
\'membership/member-profile/([^/]+)/?$\',
\'index.php?pagename=member-profile&profile=$matches[1]\',
\'top\' );
应为:
add_rewrite_rule(
\'membership/member-profile/([^/]+)/?$\',
\'index.php?pagename=membership/member-profile&profile=$matches[1]\',
\'top\' );
区别在于
pagename
应包含父/子路径。
同时-如果profile
不是可识别的查询变量,需要添加它才能访问:
function wpse47596_query_vars( $query_vars ){
$query_vars[] = \'profile\';
return $query_vars;
}
add_filter( \'query_vars\', \'wpse47596_query_vars\' );