String 如何使用查询字符串将htacess中的URL重定向到同一URL但不同的查询字符串

String 如何使用查询字符串将htacess中的URL重定向到同一URL但不同的查询字符串,string,apache,.htaccess,redirect,String,Apache,.htaccess,Redirect,由于从多语言网站中删除了多种语言,我需要301将以?lang=da、?lang=de和?lang=nl结尾的页面重定向到相同的URL,但以?lang=en结尾。这听起来像是一个常见的场景,但我还没有找到正确的代码来完成这一任务,或者尝试了一些代码,因为这些代码的目的要么是重定向到一个新的URL,要么是替换URL而不是查询字符串,而我需要替换查询字符串并保留URL。这可能就是您要寻找的: RewriteEngine on RewriteCond %{QUERY_STRING} ^lang=(da|

由于从多语言网站中删除了多种语言,我需要301将以
?lang=da
?lang=de
?lang=nl
结尾的页面重定向到相同的URL,但以
?lang=en
结尾。这听起来像是一个常见的场景,但我还没有找到正确的代码来完成这一任务,或者尝试了一些代码,因为这些代码的目的要么是重定向到一个新的URL,要么是替换URL而不是查询字符串,而我需要替换查询字符串并保留URL。

这可能就是您要寻找的:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^lang=(da|de|nl)$
RewriteRule ^ %{REQUEST_URI}?lang=en [QSD,R=301,END]
要使其正常工作,显然需要将重写模块加载到http服务器中,并且还必须为http主机激活该模块

从302重定向开始是一个好主意,一旦你确信一切都按要求设置好了,就把它改成301重定向。这样可以防止丑陋的缓存效果


您可以在http服务器的主机配置中实现这些规则。或者,如果您没有访问权限,您可以使用分布式配置文件(“.htaccess”),但这有性能缺点,您还需要首先启用这些文件的解释。请参阅您正在使用的工具的文档,以了解如何操作。

欢迎使用SO,请在您的问题中分享您的访问规则文件,谢谢。谢谢!难道代码中有一点小错误吗?我在htaccess文件的几个位置输入了它,测试结果是这样的URL:
https://www.ullstorp.se/$%7bREQUEST_URI%7d?lang=en
这是当前的htaccess文件:
#在RewriteCond%{QUERY_STRING}^lang=(da | de | nl)$RewriteRule^${REQUEST_URI}?lang=en[QSD,R=302,END]#结束重定向
确保它必须是
%{REQUEST\u URI}
,而不是
${REQUEST\u URI}
,我的错。但是:请注意,您需要了解这是关于什么的。你应该知道你正在使用的工具。您需要阅读这些工具的文档。这一切都意味着你应该能够自己解决这个问题。只是盲目地抄袭而不了解自己在做什么不是一种策略。除此之外,祝你好运!是的,你是对的:(无论如何,谢谢你,我会研究这一点,只是不知道从哪里开始,目前时间不多,所以非常感谢,它是有效的。你总是从你实际使用的工具的文档开始:apache http服务器的文档质量很好,并且有很好的示例。这对于开源项目来说是典型的。