2017-02-11 89 views
0

我想根據所在國家將訪問者重定向到特定的虛擬url。例如,如果您在美國並輸入www.mysite.com/subsite,則重定向到www.mysite.com/subsite/US/ 如果輸入www.mysite.com/subsite/contact.php,您必須重定向到www.mysite.com/subsite/US/contact.php。對於另一個國家,例如阿根廷(AR),您將重定向到www.mysite.com/subsite/AR/contact.php。在後面,您將始終可以看到www.mysite.com/subsite/contact.php的物理內容。PHP - 如何通過htaccess來避免重定向中的無限循環

我讀了很多關於這個,並嘗試通過編輯htaccess來做到這一點,它工作(有點......),但我得到了一個無限循環。我試着制定一條規則,說:「如果你的網址中沒有字符串」AR「,請重定向,否則,保持你的狀態」,但它不起作用。任何人都可以幫助我。這裏是我到目前爲止的代碼:

GeoIPEnable On 

RewriteEngine On 
RewriteOptions MaxRedirects=1 
RewriteCond %{HTTP_HOST} ^(?!.*AR).*$ [NC] 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AR$ 
RewriteRule ^(.*)$ /subfolder/AR/$1 [R] 

回答

1

你的問題是這樣的一行:

RewriteCond %{HTTP_HOST} ^(?!.*AR).*$ [NC] 

變量%{HTTP_HOST}是由瀏覽器所請求的域名。要檢查路徑,您可以使用%{REQUEST_URI}

RewriteCond %{REQUEST_URI} ^(?!.*/AR(?:$|/)) [NC] 
+1

非常感謝,它的工作原理非常完美! –