首页 > 解决方案 > 如何使用查询字符串将htacess中的URL重定向到相同的URL但不同的查询字符串

问题描述

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

标签: stringapache.htaccessredirect

解决方案


这可能是您正在寻找的:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^lang=(da|de|nl)$
RewriteRule ^ %{REQUEST_URI}?lang=en [QSD,R=301,END]

为此,显然需要将重写模块加载到您的 http 服务器中,并且也必须为您的 http 主机激活它。

最好从 302 重定向开始,并且只有在确信一切都已按要求设置后才将其更改为 301。这样你就可以防止丑陋的缓存效果......

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


推荐阅读