即使正则表达式设置为.g也会忽略add_rewrite_rule。*

时间:2015-11-02 09:33:54

标签: wordpress mod-rewrite

每个指南似乎都很简单直接 - 只需将一小段代码放入functions.php中,然后通过永久链接和保存来刷新重写规则。但是即使使用最宽松的描述符,我的函数也拒绝承认。

我已经慢慢削减了我使用的代码:

function new_rewrite() {
  add_rewrite_rule('^u/(.+)/?$','index.php?pagename=user-profile&user=$matches[1]','top');
}
add_action('init', 'new_rewrite');

这个完全包罗万象的版本向我证明了一些严重错误:

function new_rewrite() {
  add_rewrite_rule('.*','index.php','top');
}
add_action('init', 'new_rewrite');

当我使用上面的代码---这对我来说是有道理的,应该把任何东西给它并返回主页---而是完全被忽略,一切都和我试图完全一样写任何规则。

让我重申一下:我已经把它放在functions.php中,我已经添加了很多其他功能,比如add_custom_query_var取得了巨大的成功,而且我也一直在不断刷新重写规则。

这可能会发生什么?

1 个答案:

答案 0 :(得分:1)

Wordpress使用位于其安装根目录的htaccess - 而不是网站服务器文件夹的根目录 - 因此WP将覆盖的htaccess与 wp-config.php < / em>的

默认情况下,WP htaccess包含以下两条注释:

# BEGIN WordPress
# END WordPress

Wordpress使用它们来了解他应该在哪里添加add_rewrite_rule生成的规则 - 有时候移动此注释可以使规则比其他一些自定义规则更高或更低。