2012-08-29 31 views
2

我有以下規則致力於中國用戶重定向到該網站的中國語言版本:htaccess的重定向只有在HTTP引用不等於什麼

RewriteCond %{HTTP:Accept-Language} ^zh [NC] 
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
    RewriteRule ^(.*)$ http://ch.example.com/$1 [L,R=301] 

    RewriteCond %{HTTP:Accept-Language} ^zh [NC] 
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
    RewriteRule ^(.*)$ http://ch.example.com/$1 [L,R=301] 

這個偉大的工程。

但是,有一個鏈接應該將它們帶回到該網站的英文版本,這只是普通網域(www.example.com)。

但是,這只是將他們直接重定向到中國網站,因爲它符合規則。所以我需要做到這一點,所以只有當引用者不是ch.example.com時纔會觸發上述規則。

我想是這樣的:

RewriteCond %{HTTP:Accept-Language} ^zh [NC] 
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
    RewriteCond %{HTTP_REFERER} !^http?://ch\.example\.com/ [nc] 
    RewriteRule ^(.*)$ http://ch.example.com/$1 [L,R=301] 

但它不工作。

回答

2

當用戶在英文網站上查看他們的第二頁時,它會重定向到中文。更好的方法是設置一個cookie,然後檢查:

例如:http://www.askapache.com/htaccess/htaccess-fresh.html#Set_Cookie_based_Requested_directory

+0

好一點。但是,我們應該一般能夠檢查推薦是否來自* ggvc.com,然後不重定向,對嗎?所以,像這樣(儘管這不起作用) RewriteCond%{HTTP:Accept-Language}^zh [NC] RewriteCond%{HTTP_HOST}^www \ .example \ .com $ [NC] RewriteCond %{HTTP_REFERER}!^ http:// ch \ .example \ .com/[NC] RewriteCond%{HTTP_REFERER}!^ http:// www \ .example \ .com/[NC] RewriteCond%{HTTP_REFERER} !^ http:// example \ .com/[NC] RewriteRule ^(。*)$ http://ch.example.com/$1 [L,R = 301] – jazzdrive3

+0

不應依賴HTTP_REFERER:「並非所有的用戶代理都會設置它,有些提供修改HTTP_REFERER作爲功能的能力,簡而言之,它不能真正被信任。「 – Paul

+0

如何設置指向英文網站的鏈接,指向設置Cookie的頁面,然後重定向到英文網站。 – Paul

相關問題