add_action无法在wordpress中运行

时间:2013-03-30 21:29:28

标签: wordpress url-rewriting rewrite

我正在设置一个WP,它应该将对子目录的所有请求重定向到该目录中的文件。 例如,如果访问example.com/link/me,则应将用户发送到/link/index.php?me

为实现这一点,我试图在主题函数文件中添加重写规则。 这是我的代码的样子:

function moin_add_rewrite_rules() {  
    add_rewrite_rule(  
        '^([^/]*)/(link)/(?:[a-z][a-z0-9_]*)?$',  
        '/link/index.php?$matches[1]',  
        'top'  
    );  
}  
add_action( 'init', 'moin_add_rewrite_rules' );

它不起作用,访问example.com/link/me显示404(因为链接在WP之外)。 正则表达式代码有什么问题吗?还是其他地方?什么是其他可能的解决方案?

1 个答案:

答案 0 :(得分:1)

查看the Codex中的示例,匹配的表达式没有前导/

从你的正则表达式中删除前导位,然后,我认为这应该有用(对不起,我没有方便的测试环境):

add_rewrite_rule('^link/([a-z][a-z0-9_]*)/?$','/link/index.php?$matches[1]','top');

或者,您可以在.htaccess文件中执行类似操作。

作为附注,我认为,由于它目前已经编码,您应该使用$matches[3]而不是$matches[1],因为您感兴趣的值是括号中的第三个参数(Codex注释“捕获组数据从1开始,而不是0“)。