Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
htaccess重写规则导致WordPress站点出现404_Wordpress_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

htaccess重写规则导致WordPress站点出现404

htaccess重写规则导致WordPress站点出现404,wordpress,apache,.htaccess,mod-rewrite,Wordpress,Apache,.htaccess,Mod Rewrite,我使用一个带有自定义页面模板的WordPress页面,然后发送GET数据。我想改写成 接下来,我想让绿色通用化,如下所示: RewriteEngine On RewriteBase / RewriteRule ^blue/([a-zA-Z0-9]+)/?$ /blue/?id=$1 [NC,L] 这些规则位于.htaccess文件中的WordPress规则之上,但会不断产生404错误 但是,如果我使用301重定向,它确实有效: RewriteEngine On RewriteBase /

我使用一个带有自定义页面模板的WordPress页面,然后发送GET数据。我想改写成

接下来,我想让绿色通用化,如下所示:

RewriteEngine On
RewriteBase /

RewriteRule ^blue/([a-zA-Z0-9]+)/?$ /blue/?id=$1 [NC,L]
这些规则位于.htaccess文件中的WordPress规则之上,但会不断产生404错误

但是,如果我使用301重定向,它确实有效:

RewriteEngine On
RewriteBase /

RewriteRule ^blue/([a-zA-Z0-9]+)/?$ /blue/?id=$1 [R=301,NC,L]
或者,如果我输入绝对URL,它也会起作用:

RewriteEngine On
RewriteBase /

RewriteRule ^blue/([a-zA-Z0-9]+)/?$ http://example.com/blue/?id=$1 [NC,L]

但是,如果可能的话,这两种情况都会导致URL发生更改,这是我不希望看到的。那么,前两个htaccess语句有什么问题呢?

最终解决了这个问题。必须使用WordPress重写函数,而不是直接使用htaccess。这是我在theme functions.php中的代码

// Add query tags
add_filter( 'query_vars', 'stats_rewrite_tag' );
function stats_rewrite_tag( $query_vars )
{
    $query_vars[] = 'id';
    return $query_vars;
}

// Add to htaccess
function stats_rewrite_rule() {
    global $wp_rewrite;
    add_rewrite_rule(
        'blue(/([^/]+))?/?',
        'index.php?pagename=blue&slug=$matches[2]',
        'top'
    );
    $wp_rewrite->flush_rules( false );
}
add_action('init', 'stats_rewrite_rule');
// Add query tags
add_filter( 'query_vars', 'stats_rewrite_tag' );
function stats_rewrite_tag( $query_vars )
{
    $query_vars[] = 'id';
    return $query_vars;
}

// Add to htaccess
function stats_rewrite_rule() {
    global $wp_rewrite;
    add_rewrite_rule(
        'blue(/([^/]+))?/?',
        'index.php?pagename=blue&slug=$matches[2]',
        'top'
    );
    $wp_rewrite->flush_rules( false );
}
add_action('init', 'stats_rewrite_rule');