[英]WordPress rewrite rule is not working
我有一个WordPress网站,当他在URL中键入login2
时,我必须将用户重定向到wp-login.php
。 我不需要使用.htaccess
我尝试了以下代码,但无法正常工作
function my_add_rewrite_rules() {
add_rewrite_rule( 'login2', 'wp-login.php', 'top' );
flush_rewrite_rules();
}
add_action( 'init' , 'my_add_rewrite_rules' );
有什么建议么?
编辑:我尝试了此示例:
planetozh.com/blog/2011/01/pretty-login-url-a-simple-rewrite-api-plugin-example/
但这对我不起作用。
在Codex页面上专门针对flush_rewrite_rules
指出,在init
上进行刷新是一种不好的做法。 如果您使用的是插件,请在启用/禁用时刷新。
由于您未使用.htaccess,因此可以通过将第一个参数指定为false
来使刷新变软 。
为了使重写生效,您需要配置Web服务器。 这可能会因您使用哪一个而异。 由于您无法使用htaccess,因此我会花点时间猜测您正在使用nginx,在这种情况下,您需要查看此处 。 如果您运行的是Apache,则在VHost配置中没有htaccess /重写规则就无法进行重写。 但是,您可以使用这种半熟的解决方法
尝试将正则表达式更改为以下内容。 我已经测试过并且可以正常工作,但是flush_rewrite_rules无法像您所拥有的那样工作-不应在init钩子上调用它。 最简单的方法是转到永久链接设置并重新保存以便刷新。
function my_add_rewrite_rules() {
add_rewrite_rule( '^login2$', 'wp-login.php', 'top' );
}
add_action( 'init' , 'my_add_rewrite_rules' );
有关正则表达式的更多信息
^标记字符串的开头
$标记字符串的结尾
没有这些字符,您的正则表达式实际上可以正常工作,但它也可以匹配包含该字符串的任何内容,例如/ login23或/ alogin2。 这只是更好的做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.