add_rewrite_rule()奇怪的行为

时间:2016-06-23 04:38:22

标签: wordpress apache .htaccess mod-rewrite

我实际上有一些奇怪的问题,包括add_rewrite_rule():

function qvs( $vars ){
 $vars[]= 'myvar';
}
add_action( 'query_vars, 'qvs' );
function myrewrite(){
 add_rewrite_rule('something/([0-9]+), 'index.php?pagename=something&myvar=$matches[1]' );
}
add_action( 'init', 'myrewrite' );

这根本不会在.htaccess文件中写任何规则

function myrewrite(){
 add_rewrite_rule('something/([0-9]+),'something/?myvar=$matches[1]' );
}
add_action( 'init', 'myrewrite' );

写一个rewriteRule:

RewriteRule something/([0-9]+) /a-wordpress-plugins-work/something /?myvar = $ matches [1] [QSA,L]

但它不起作用......仍然以我的404页面结束

add_rewrite_rule('^something/([0-9]+), '/something/?myvar=$matches[1]' );

打印一个看起来像这样的奇怪规则:

RewriteRule ^^something/([\d]+) /a-wordpress-plugins-work//something/?myvar=$matches[1] [QSA,L]

当然这些都不起作用......

一旦我使用'index.php? ...该函数无法在.htacees文件中写入任何内容。

.... EUARRGG !!!! Pleease heeellllp !!!!!

1 个答案:

答案 0 :(得分:1)

重写规则不存储在htaccess文件中..它们存储在选项表的1个字段中。

有这个插件:https://github.com/humanmade/hm-rewrite 它是wordpress中重写url的一个非常轻的包装器,也不是比wordpress方式更好的组织和更多的逻辑。我建议你试一试。

它没有做任何神奇的东西也没有添加任何新的表格左右..只是一个包装:)

对于规则的测试,您可以使用:https://de-ch.wordpress.org/plugins/rewrite-rules-inspector/

确保在添加新规则后刷新重写规则。 您可以使用此插件刷新它们,或使用名为flush_rewrite_rules的构建函数