htaccess重写规则导致WordPress站点出现404
我使用一个带有自定义页面模板的WordPress页面,然后发送GET数据。我想改写成 接下来,我想让绿色通用化,如下所示: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 /
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');