2011-12-28 46 views
1

我正在自定义我的WordPress登录页面。这是我想达到的目标:只有当action = logout查询字符串不存在时,RewriteRule

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

我不能重定向注销链接,因为/登录不会注销用户,只有WP-login.php中能够做到这一点。

我该如何达到上述目的?谢谢!

+0

你确定你想'/wp-login.php?action=register→/ login?action = logout'重定向到action = logout? – Virendra 2011-12-28 06:14:04

+0

@Virendra哎呀,你说得对,谢谢你。我已更新我的问题 – blogjunkie 2011-12-28 07:33:57

回答

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将只当URL为wp-login.php?action=register。如果有其他查询参数,它将不起作用。如果你想要的工作,如果action=register是存在于URL不论任何其他参数或它的位置,然后使用这个规则:

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

感谢您的快速回答!我试过你的代码,它的工作..但现在我无法登录。我认为这是因为POST动作也被发送到wp-login.php。有任何想法吗? – blogjunkie 2011-12-28 06:39:25

+0

我不确定我们如何转发POST请求(如果可以的话)。 – Virendra 2011-12-28 06:46:02

+0

你的问题解决了吗? – Virendra 2011-12-28 20:40:26