我的某个WP网站存在严重问题。 Plaese看看我的重写规则:
function set_rewrite_rules(){
add_rewrite_tag('%posttype%', '([^&]+)');
add_rewrite_rule( '^expertise[/]([^/]+)[/]([^/]+)[/]page[/]([0-9]+)[/]?',
'index.php?expertise=$matches[1]&posttype=$matches[2]&paged=$matches[3]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]articles[/]([^/]+)[/]?',
'index.php?article=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]verdicts[/]([^/]+)[/]?',
'index.php?verdict=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]laws[/]([^/]+)[/]?',
'index.php?law=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]prosecutions[/]([^/]+)[/]?',
'index.php?prosecution=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]+)[/]([^/]+)[/]?',
'index.php?expertise=$matches[1]&posttype=$matches[2]',
'top' );
}
add_action('init', 'set_rewrite_rules');
效果很好,但它创造了很多额外的页面,如:
/expertise/[EX-NAME]/page/2/page/4/page/3/page/2/page/4/page/2/
通常应该返回404但是现在这些页面可以正常工作&看起来像一个普通的有效页面。 预期结果:分页应仅适用于一次匹配。例如:
/expertise/[EX-NAME]/page/2/
set_rewrite_rules
被注释掉时,一切都按预期工作。
答案 0 :(得分:1)
试图将$添加到最后一条规则&它看起来没有额外的页面。
参见示例:
function set_rewrite_rules(){
add_rewrite_tag('%posttype%', '([^&]+)');
add_rewrite_rule( '^expertise[/]([^/]+)[/]([^/]+)[/]page[/]([0-9]+)[/]?',
'index.php?expertise=$matches[1]&posttype=$matches[2]&paged=$matches[3]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]articles[/]([^/]+)[/]?',
'index.php?article=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]verdicts[/]([^/]+)[/]?',
'index.php?verdict=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]laws[/]([^/]+)[/]?',
'index.php?law=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]*)[/]prosecutions[/]([^/]+)[/]?',
'index.php?prosecution=$matches[2]',
'top' );
add_rewrite_rule( '^expertise[/]([^/]+)[/]([^/]+)[/]?$',
'index.php?expertise=$matches[1]&posttype=$matches[2]',
'top' );
}
add_action('init', 'set_rewrite_rules');
感谢@revo的帮助!