gpt4 book ai didi

apache - 使用浏览器语言和非 www 域进行 mod_rewrite

转载 作者:行者123 更新时间:2023-12-04 19:11:47 25 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我使用以下规则根据浏览器语言将域重定向到网站的 EN 版本:

RewriteCond %{HTTP:Accept-Language} ^en.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /en [L,R=302]

这适用于 www.domain.com,但无法从 now-www 重定向到 www。
例如,重定向失败 http://domain.comhttp://www.domain.com/en ,这就是我正在努力实现的目标。

我应该在规则中添加什么?
谢谢!

最佳答案

要将非 www 重定向到 www,请在问题之前添加此规则集,如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

#This is the rule set in the question:
RewriteCond %{HTTP:Accept-Language} ^en.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /en [L,R=302]

由于您说实际规则集工作正常,除了 www问题,我没有修改它或测试它。

最高规则的作用是将 www 插入到所有 URL 中。就这样。它独立于您问题中的规则,但如果您只想将该转换限制为 EN 语言,请移动此行:
RewriteCond %{HTTP:Accept-Language} ^en.*$ [NC]
在最后一个规则集中,到第一个,像这样:
....
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{HTTP:Accept-Language} ^en.*$ [NC]
....

选项

要重定向与之前的语言规则不匹配的所有请求,只需将以下几行放在所有语言规则之后的底部。
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /en [L,R=302]

默认情况下,它将所有传入请求重定向到英语部分。

因此,您的 .htaccess 文件应如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^sv.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /sv [L,R=302]

RewriteCond %{HTTP:Accept-Language} ^nb.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /nb [L,R=302]

RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /en [L,R=302]

我建议你全部更换 R=302R=301 .它更适合 SEO 目的。

关于apache - 使用浏览器语言和非 www 域进行 mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com