使用自定义重写规则时请求的URL更改

时间:2012-04-01 作者:Steven

我的问题与问题#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这个东西还很陌生,也许我跳得有点太快了。

1 个回复
最合适的回答,由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\' );

结束

相关推荐