Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess为wordpress重定向_Php_Wordpress_Apache_.htaccess_Redirect - Fatal编程技术网

Php .htaccess为wordpress重定向

Php .htaccess为wordpress重定向,php,wordpress,apache,.htaccess,redirect,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.

由于我们的主题中存在缺陷,我们正试图实现这些任务

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.)但我们的注册URL是

   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]
但这也不起作用。
请告诉我们做错了什么。

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

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中不匹配,因为它是根据目录指令匹配的。

基于我的评论,为了更清晰地阅读,请使用此选项,这样您就不会受到重定向匹配无法查看查询字符串的影响:

<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>
#或^只为行动而行动
重定向匹配^/(en | fr | de)/wp login.php$/wp login.php?重定向到=http://mysite.lu/1美元/我的帐户/

谢谢您的帮助。现在奇怪的事情正在发生。URL是正确的,但我在loginyes上得到了404,奇怪的是,如果我评论你的两行代码,那么它就工作了。是的,如果我评论你的两行代码,它就工作了。您的代码可能需要一些修改,让我试试。请确保此重定向规则是您的第一条规则。如果URL是您想要的,即
http://example.com/wp-login.php?redirect_to=http‌​‌​‌​://迈希特‌​E‌​鲁‌​/嗯/‌​我的a‌​ccou‌​nt
那么我相信这个重定向规则运行得很好。太好了。它起作用了。我们如何将其转换为所有语言,如ezra尝试的dosorry,但它不适用于注册URL。注册URL是完全正确的,我错误地判断RedirectMatch不会过滤或匹配查询字符串后的任何内容,但不用担心,Apache2.4可以轻松地进行检查。添加以下内容:
重定向匹配^/(en | fr | de)/wp login.php$/wp login.php?重定向到=http://mysite.lu/$1/my account/
查找所有关于您是否应该使用2.2的信息您可以使用具有相同精确检查的RewriteCond和RewriteRule,这是一个RewriteCond检查^action和RewriteRule的方法,与redirectmatch完全相同,但在RewriteRule的末尾使用了适当的rewrite标志。如果你想不出来,请告诉我。最后一个旁注。如果您有权访问服务器配置,请不要使用.htaccess,因为它并不像许多人认为的那样是某种“重写仓库”。它仅用于对主配置文件没有权限的用户。同样匹配^/inside.htaccess也不起作用,它必须是^/something而不是^/something