【发布时间】:2021-07-30 20:08:07
【问题描述】:
我正在尝试将我的语言变量 domain.com?lang=X 重定向到子域 X.domain.com
我有这个代码:
RewriteCond %{QUERY_STRING} (^|&)lang=(es|de|fi|tr)
RewriteRule ^(.*)$ https://%2.domain.com%{REQUEST_URI} [R=301,L]
很遗憾,当我想通过转到 domain.com/page?lang=es 更改语言时,我被重定向到 es.domain.com/page?lang=es 导致循环。
所以我尝试在 URL 的末尾添加一个问号,如下所示:
RewriteRule ^(.*)$ https://%2.domain.com%{REQUEST_URI}? [R=301,L]
防止它在子域访问时添加 ?lang= 变量,但在这种情况下,语言不会改变,我最终得到 es.domain.com/page 英文。
在过去的 4 个小时里,我一直在挖掘 StackOverflow 和其他网站,试图找到解决方案,但无济于事。如何检测到我已经被重定向到子域,然后在实际更改语言时忽略 ?lang= 变量?
请帮忙。
谢谢。
【问题讨论】:
标签: .htaccess redirect mod-rewrite url-rewriting query-string