我在为一个包含三个不同商店的电子商务网站使用mod_geoip时遇到了一些问题。我们有一个主要商店位于根目录下 /store,但也有位于 /ukstore 和 /austore 目录下的商店。主要的 /store 目录包含 /skin、/media 和 /js 子目录,其中包含所有的 CSS、图片和 JavaScript 文件。在当前的设置下,URL 可以无缝切换基础路径,但保留其余部分,因此如果一个来自英国的用户访问 root/store/category/product/,他们将被重定向到 root/ukstore/category/product/。
现在存在两个问题。
首先,每当客户访问像结账或账户这样的安全页面时,CSS 和 JavaScript 的 URL 就会被重写为 root/ukstore/skin 或 root/ukstore/js。是否有关于那些 URL 的 SSL 我忽略了什么?
其次,如果一个来自南非的用户访问商店,则会被重写到英国商店,并且所有的 CSS、JS 和图片都与 store/skin 链接完美匹配,但是如果一个来自英国的用户访问该商店,则 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>
非常感谢任何帮助!
/store/skin/my.css
,还是skin/my.css
? - Ulrich PalhaRewriteLog "/path-to-logs/logs/rewrite.log"
和RewriteLogLevel 9
。 - Ulrich Palha