我正在设置一个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之外)。
正则表达式代码有什么问题吗?还是其他地方?什么是其他可能的解决方案?
答案 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“)。