2014-10-29 114 views
0

我正在使用一个WordPress页面和一个自定义页面模板,然后我发送了GET数据。我想重写http://example.com/blue/greenhttp://example.com/blue/?id=greenhtaccess重写规则在WordPress网站中导致404错误

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] 

这些规则上面摆放着WordPress的规则.htaccess文件,但继续产生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] 

然而,这两个导致如果可能,请更改我不想要的网址。那么前两个htaccess语句有什么问题呢?

回答

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');