2017-04-26 52 views
1

我在我的站点.htaccess文件中使用了一些mod-rewrite代码,将浏览器语言设置为各种语言的用户重定向到我的站点的不同版本。这是行之有效的 - 但是...我需要一种方式来覆盖这些重写规则,当用户想要查看主要的英文版本,而不是他们会根据浏览器的语言设置自动重定向到的版本。htaccess mod-rewrite语言覆盖

因此,例如,用户A的浏览器语言设置为韩语,他们访问example.com网站 - 重写规则读取它们设置为韩语并将其移至example.co.kr - example.co。 kr我有一个按钮,它说 - 给我看这个网站的英文版本(链接到example.com) - 然后链接回example.com ...但是当前然后重定向回example.co.kr作为重写脚本拒绝...

我该如何编写重写脚本以允许覆盖规则强制它停留在example.com网站上,当我也想要它时?

重写代码,我已经是:

RewriteEngine On 
RewriteBase/

#RewriteCond %{HTTP:Accept-Language} ^en [NC] 
#RewriteRule ^$ https://example.com/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^ko [NC] 
RewriteRule ^$ https://example.co.kr/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^pt [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^pt-PT [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^pt-BR [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(|ko|pt|pt-PT|pt-BR)/?$ https://example.com/ [QSA,NC,L] 

任何想法?

干杯,

+0

向查询中添加一个参数并检查您的重写规则。在Accept-Language头部使用查询参数,并且瞧。 – Murf

+0

Thanks @Murf - 代码建议/链接的任何机会 - htaccess代码对我来说是新的//感谢 – dubbs

+0

任何有关如何实现此目的的任何想法? – dubbs

回答

1

您需要修改规则以查找特殊的查询参数,例如notKO这样的:

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} !notKO [NC] 
RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteRule ^$ https://example.com/ [L,R=301] 

RewriteCond %{QUERY_STRING} !notKO [NC] 
RewriteCond %{HTTP:Accept-Language} ^ko [NC] 
RewriteRule ^$ https://example.co.kr/ [L,R=301] 

RewriteCond %{QUERY_STRING} !notKO [NC] 
RewriteCond %{HTTP:Accept-Language} ^pt [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{QUERY_STRING} !notKO [NC] 
RewriteCond %{HTTP:Accept-Language} ^pt-PT [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{QUERY_STRING} !notKO [NC] 
RewriteCond %{HTTP:Accept-Language} ^pt-BR [NC] 
RewriteRule ^$ https://example.com/br/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(|ko|pt|pt-PT|pt-BR)/?$/[NC,L] 

现在你需要开始在你的show me abc version of this website按钮点击发送?notKO查询参数。

在测试此更改之前清空浏览器。

+1

谢谢@anubhava - 效果很好! – dubbs