2017-04-26 85 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