由于我们主题中的错误,我们正在努力实现这些任务
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]
但这也行不通。 请告诉我们做错了什么。
答案 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>