繁体   English   中英

WordPress重写规则不起作用

[英]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/

但这对我不起作用。

  1. Codex页面上专门针对flush_rewrite_rules指出,在init 上进行刷新是一种不好的做法。 如果您使用的是插件,请在启用/禁用时刷新。

  2. 由于您未使用.htaccess,因此可以通过将第一个参数指定为false来使刷新变软

  3. 为了使重写生效,您需要配置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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM