仅当action = logout查询字符串不存在时才重写规则

时间:2011-12-28 06:09:32

标签: .htaccess mod-rewrite

我自定义WordPress登录页面。这就是我想要实现的目标:

/wp-login.php → /login  
/wp-login.php?action=register → /login?action=register  
/wp-login.php?action=logout&_wpnonce=eaea03899c → NOT redirected  

我无法重定向注销链接,因为/ login不会将用户注销,只有wp-login.php能够这样做。

我如何实现上述目标?谢谢!

1 个答案:

答案 0 :(得分:0)

这可能就是你所需要的。它会将所有wp-login.php?query=string重定向到/login?query=string,除非查询字符串中存在action=logout。 (另外,假设您希望保持查询字符串不变,而不是更改它。)

RewriteEngine On
RewriteCond %{QUERY_STRING} !action=logout [NC]
RewriteRule wp-login.php /login [L,R=301]

更新:以下是重定向wp-login.phpwp-login.php?action=register的规则。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^action=register$ [NC]
RewriteRule wp-login.php /login [L,R=301]

RewriteRule ^wp-login.php /login [R=301,L]

请注意,转发wp-login.php?action=register的规则仅在网址为wp-login.php?action=register时才有效。如果有任何其他查询参数,它将无法工作。如果您希望它在URL中存在action=register时工作,而不考虑任何其他参数或其位置,请使用此规则:

RewriteCond %{QUERY_STRING} action=register [NC]
RewriteRule wp-login.php /login [L,R=301]