您不应该在使用wordpress的htaccess中执行此操作。相反,您应该使用添加重写规则add_rewrite_rule 然后注册查询变量。
您将考虑添加重写规则来处理两次重写:
RewriteRule ^definition/([^/]+) /display-definition?word=$1 [NC]
RewriteRule ^murphyism/([^/]+) /display-murphy?id=$1 [NC]
For Definition:
add_action( \'init\', \'wpse251676_definition_rewrite_rule\' );
function wpse251676_definition_rewrite_rule(){
add_rewrite_rule(
\'definition/([a-z0-9A-Z_-]+)/?$\',
\'index.php?pagename=display-definition&definition_word=$matches[1]\',
\'top\'
);
}
For Murphyism:
add_action( \'init\', \'wpse251676_murphyism_rewrite_rule\' );
function wpse251676_murphyism_rewrite_rule(){
add_rewrite_rule(
\'murphyism/([a-z0-9A-Z_-]+)/?$\',
\'index.php?pagename=display-murphy&murphy_id=$matches[1]\',
\'top\'
);
}
You can then register the query vars with:
add_filter( \'query_vars\', \'wpse251676_query_vars\' );
function wpse251676_query_vars( $query_vars ) {
$query_vars[] = \'definition_word\';
$query_vars[] = \'murphy_id\';
return $query_vars;
}
这样,您就可以使用内置
get_query_var
在模板文件中或任何需要获取变量的地方,而不是使用
$_GET[\'variable\']
$word = get_query_var(\'definition_word\'); //$_GET[\'definition_word\']
$id = get_query_var(\'murphy_id\'); //$_GET[\'murphy_id\']
NOTE: 最好的做法是在变量前面加上前缀,使其具有不同于任何正式定义或未来定义的唯一名称
References: