2012-02-02 129 views
15

我在使用mod_geoip時遇到了一些有關3個不同商店的電子商務網站的問題。我們在root/store有我們的主要商店,但在root/ukstore和root/austore也有商店。主根/存儲包含/ skin,/ media和/ js目錄,其中包含所有css,圖像和javascript。有了這個當前的設置,網站完美地換出了基地,但保留了URL的其餘部分,所以如果來自英國的用戶進入root/store/category/product /,他們將被重定向到root/ukstore/category/product/。htaccess使用mod_GeoIP重寫規則

2件事情現在是問題。

每當客戶訪問結賬或帳戶等安全頁面時,css和javascript的URL將被重寫爲root/ukstore/skin或root/ukstore/js。在這些網址的SSL方面我缺少什麼?其次,如果來自南非的用戶訪問商店,則他們被重寫到英國商店,並且所有CSS,js,圖像完全鏈接回商店/皮膚,但是如果來自英國的用戶訪問然後存儲css,js和圖像的URL嘗試被重寫爲root/ukstore/skin

以下是root/store中我的htaccess文件中的代碼。每家商店也有他們自己的htaccess文件,但沒有太多內容。

<IfModule mod_geoip.c> 
GeoIPEnable On 

Options +FollowSymLinks 
RewriteEngine on 
#skip processing directories 
RewriteRule ^store/skin/ - [L,NC] 
RewriteRule ^store/media/ - [L,NC] 
RewriteRule ^store/js/ - [L,NC] 

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(AQ|AU|MY|BV|BN|BN|MM|KH|CN|CX|CC|CK|GQ|FJ|PF|GU|GW|HM|HK|ID|KI|KR|KP|KR|LA|MO|MY|MH|FM|MM|NR|NC|PG|NZ|NU|NF|PG|CN|PH|PN|WS|SG|SB|KR|LK|BN|TW|TW|AU|TH|TL|TK|TO|TV|VU|VN|VN|WF)$ 
RewriteCond %{REQUEST_URI} ^/store(/.*)$ [NC] 
RewriteRule^/austore%1 [L,R] 

#UK Store Rewrites 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(AF|AX|AL|DZ|AD|AO|AM|AT|AZ|BH|BD|IS|BY|BE|BJ|BT|BA|BW|IO|BG|BF|BI|GB|CM|ES|CV|CF|TD|GB|KM|CG|CD|CG|CD|CI|HR|CY|CZ|CZ|BJ|DK|DJ|EG|ER|EE|ET|FO|FI|FR|TF|GA|GM|GE|DE|GH|GI|GD|GR|GL|GN|VA|HU|IS|IN|IR|IR|IQ|IE|IL|IT|CI|JO|KZ|KE|KW|KG|LV|LB|LS|LR|LY|LY|LI|LT|LU|MK|MG|MW|MV|ML|MT|MR|MU|MC|MC|MN|ME|MA|MZ|NA|NP|NL|NE|NG|IE|NO|OM|PK|PS|PS|CG|PL|PT|QA|CI|MK|ZA|CD|RE|RO|RU|RW|SH|SM|ST|SA|SN|RS|SC|SL|SK|SI|SO|SO|ZA|ES|SD|SJ|SZ|SE|CH|SY|SY|TJ|TZ|TN|TR|TM|AE|UG|UA|AE|GB|BF|UZ|VA|GB|EH|YE|ZM|ZW)$ 
RewriteCond %{REQUEST_URI} ^/store(/.*)$ [NC] 
RewriteRule^/ukstore%1 [L,R] 
</IfModule> 

任何幫助將不勝感激!

+0

你的css/image網址是否以'/ store/skin/my.css'開頭,或者它們是'skin/my.css'? – 2012-02-02 17:04:16

+0

這是一個magento設置,因此它們實際上是/store/skin/frontend/default/theme/css/my.css。但在CSS中,它們是url(../ images/bg-main3.jpg) – coloradohiker 2012-02-02 17:22:46

+0

鑑於CSS有一個前導斜槓,第一條規則將防止它被重寫。當你說'嘗試重寫到root/ukstore/skin'時,你是否看到了重定向到'/ ukstore/skin'或者這是否在Ukstore的.html文件中? – 2012-02-02 17:49:10

回答

1

問題是,您在.htaccess上下文中使用重寫條件,因此條件應該與您所在的目錄相關,這就是爲什麼重寫條件相對於皮膚,js和媒體中提到的原因問題不匹配。

RewriteRule ^(skin|media|js)/ - [L,NC] 

,或者如mod_rewrite的指南中提到(http://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteRule

如果你想對陣的完整URL路徑中每個目錄 (:你應該喜歡的東西代替它們htaccess)RewriteRule,使用RewriteCond中的%{REQUEST_URI}變量。

0

基於IP的重定向可能會失敗,什麼平時人們要的是基於語言的重定向。您可以閱讀用戶瀏覽器中配置的語言,並將其重定向到您的網絡所具有的語言。就這樣:

RewriteCond %{HTTP:Accept-Language} ^(en|ja|de|zh|fr|it|nl|fi|sv|no) [NC] 
RewriteRule ^$ /en [R=303,L,QSA] 

而你要在你的方法是什麼有在你的服務器的靜態文件的直接訪問,這樣就可以實現設置這個條件,所以靜態文件不會rewrited

RewriteCond %{REQUEST_FILENAME} !-f