wordpress的.htaccess重定向

时间:2016-08-21 10:14:52

标签: php wordpress apache .htaccess redirect

由于我们主题中的错误,我们正在努力实现这些任务

1。)当用户立即点击登录时,他将访问www.mysite.lu/en/wp-login.php或www.mysite.lu/fr/wp-login.php(WPML多语言)。对于所有这些类型的URL,它显示404页面。所以我们认为我们可以使用.htaccess重定向方法从URL中删除语言。 所以我们使用以下代码

   Redirect /en/wp-login.php /wp-login.php?redirect_to=http://mysite.lu/en/my-account
   Redirect /fr/wp-login.php /wp-login.php?redirect_to=http://mysite.lu/fr/my-account/
   Redirect /de/wp-login.php /wp-login.php?redirect_to=http://mysite.lu/de/my-account

使用上面的代码我们的登录URL工作正常。

2。)但我们的注册网址是

   http://mysite.lu/en/wp-login.php?action=register

因此,当我们点击注册链接时,它也会重定向到

   http://mysite.lu/de/my-account

这是不正确的。我们不想重定向注册URL。

为此,我们还尝试了下面的代码

 RewriteCond %{QUERY_STRING} !(^|&)action=register($|&) [NC]
 RewriteRule  /en/wp-login\.php$ /wp-login.php?redirect_to=http://mysite.lu/en/my-account [L,R=301]

但这也行不通。 请告诉我们做错了什么。

2 个答案:

答案 0 :(得分:2)

请将此规则作为您的第一条规则:

RewriteCond %{QUERY_STRING} !(^|&)action=register($|&) [NC]
RewriteRule ^([a-z]{2})/wp-login\.php$ /wp-login.php?redirect_to=http://mysite.lu/$1/my-account [L,R=301,NE,NC]

.htaccess中的前导斜杠/不匹配,因为它是每个目录指令。

答案 1 :(得分:1)

根据我的评论和更清晰的阅读使用,这样您就不会受到RedirectMatch无法通过query_string的影响:

<If "! %{QUERY_STRING} =~ /^.+/"> # or ^action just for action
RedirectMatch ^/(en|fr|de)/wp-login.php$ /wp-login.php?redirect_to=http://mysite.lu/$1/my-account/
</If>