WordPress-add_rewrite_rule不起作用。返回404

时间:2018-12-27 17:13:58

标签: regex wordpress

我正在使用add_rewrite_rule在Wordpress中添加自定义URL。以下是我的代码:-

add_action( 'init', 'some_function' );
function some_function(){
    global $wp_rewrite; 
    add_rewrite_rule(  // This is not working.
        '([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
        'index.php?partners_deal_url=$matches[1]',
        'top' );
    add_rewrite_rule(  // This is working.
        'dp/([a-zA-Z0-9-]+)/?$',
        'index.php?partners_deal_url=$matches[1]',
        'top' );
    $wp_rewrite->flush_rules();
}

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'partners_deal_url';
    return $query_vars;
}

add_action( 'template_redirect', 'prefix_url_rewrite_templates' );
function prefix_url_rewrite_templates() {
    if (get_query_var('partners_deal_url')){
        add_filter( 'template_include', function() {
            return get_template_directory() . '/single-deal.php';
        });
    }
}

但是,我的某些自定义URL有效,而有些则无效。不确定,为什么?

以下网址不起作用:-

add_rewrite_rule('([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
        'index.php?partners_deal_url=$matches[1]', 'top' );

例如:-当我浏览到domain.com/ABCD/dp/PQR时,显示未找到404。

下面的规则很好用。

add_rewrite_rule('dp/([a-zA-Z0-9-]+)/?$',
            'index.php?partners_deal_url=$matches[1]', 'top' );

例如:-当我浏览到domain.com/dp/PQR时,它工作得很好。

但是,以下网址不起作用:-

add_rewrite_rule('([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
        'index.php?partners_deal_url=$matches[1]', 'top' );

例如:-当我浏览到domain.com/ABCD/dp/PQR时,显示未找到404。

我使用Monkeyman Rewrite Analyzer测试了url规则,并且URL模式已匹配,但仍然会显示404错误。

我到底想念什么?

0 个答案:

没有答案