我正在使用带有自定义页面模板的WordPress页面,然后我发送GET数据。我想将http://example.com/blue/green重写为http://example.com/blue/?id=green
RewriteEngine On
RewriteBase /
RewriteRule ^blue/green/?$ /blue/?id=green [NC,L]
考虑到下一步,我想制作绿色通用,如下所示:
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语句出了什么问题?
答案 0 :(得分:0)
最后想出来了。必须直接使用WordPress重写函数而不是htaccess。这是我在主题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');