.htaccess 语言子域重定向
.htaccess language subdomain redirect
我正在尝试将我的语言变量 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 个小时浏览 Whosebug 和其他网站,试图找到解决方案,但无济于事。我如何检测到我已经重定向到子域,然后在实际更改语言时忽略 ?lang= 变量?
请帮忙
谢谢。
能否请您尝试遵循 htaccess 文件顶部的 .htaccess 规则。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
##use THE_REQUEST variable to match condition here, with NC flag.
RewriteCond %{THE_REQUEST} \s/([^?]*)\?&?lang=(es|de|fi|tr)\s [NC]
RewriteRule ^ https://%2.domain.com%1 [NE,R=301,L]
为此您需要 2 条规则:
RewriteEngine On
# external redirect rule using THE_REQUEST variable
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?]*)\?&?lang=(es|de|fi|tr)\s [NC]
RewriteRule ^ https://%2.domain.com/%1? [NE,R=301,L]
# internal rewrite rule to add lang parameter back
RewriteCond %{QUERY_STRING} !(^|&)lang= [NC]
RewriteCond %{HTTP_HOST} ^(es|de|fi|tr)\. [NC]
RewriteRule ^ %{REQUEST_URI}?lang=%1 [L,QSA]
我正在尝试将我的语言变量 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 个小时浏览 Whosebug 和其他网站,试图找到解决方案,但无济于事。我如何检测到我已经重定向到子域,然后在实际更改语言时忽略 ?lang= 变量?
请帮忙
谢谢。
能否请您尝试遵循 htaccess 文件顶部的 .htaccess 规则。 请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
##use THE_REQUEST variable to match condition here, with NC flag.
RewriteCond %{THE_REQUEST} \s/([^?]*)\?&?lang=(es|de|fi|tr)\s [NC]
RewriteRule ^ https://%2.domain.com%1 [NE,R=301,L]
为此您需要 2 条规则:
RewriteEngine On
# external redirect rule using THE_REQUEST variable
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?]*)\?&?lang=(es|de|fi|tr)\s [NC]
RewriteRule ^ https://%2.domain.com/%1? [NE,R=301,L]
# internal rewrite rule to add lang parameter back
RewriteCond %{QUERY_STRING} !(^|&)lang= [NC]
RewriteCond %{HTTP_HOST} ^(es|de|fi|tr)\. [NC]
RewriteRule ^ %{REQUEST_URI}?lang=%1 [L,QSA]