2012-02-02 16 views
15

3つの異なる店舗を持つeコマースサイトでmod_geoipに問題があります。私たちはメインストアをroot/storeに持っていますが、root/ukstoreとroot/austoreにもストアを持っています。メインのルート/ストアには、すべてのcss、イメージ、およびjavascriptを含む/ skin、/ media、および/ jsディレクトリが含まれています。この現在の設定では、URLは完全にベースから外しますが、英国のユーザーがroot/store/category/product /に行くと、root/ukstore/category/product /にリダイレクトされます。 。htaccess mod_GeoIPでルールを書き直す

2つの問題が修正されました。

お客様がチェックアウトやアカウントのような安全なページにアクセスするたびに、cssとjavascriptのURLがroot/ukstore/skinまたはroot/ukstore/jsに書き換えられています。これらのURLのSSLに関して、私が見逃していることはありますか?

第2に、南アフリカのユーザーが店舗にアクセスすると、それらはイギリスの店舗に書き換えられ、すべてのcss、js画像は店舗/スキンに完全にリンクされますが、イギリスのユーザーがstore、css、js、およびimagesの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 URLは先頭のスラッシュ、つまり '/ store/skin/my.css'で始まっていますか、それとも' skin/my.css'ですか? –

+0

これはmagentoの設定なので、実際には/store/skin/frontend/default/theme/css/my.cssです。 CSSの中にはURL(../ images/bg-main3.jpg) – coloradohiker

+0

CSSに先行するスラッシュがある場合、最初のルールはそれが書き換えられないようにします。あなたが 'root/ukstore/skinに書き直そうとしているときに' '/ ukstore/skin'へのリダイレクトを見ているのか、それともUkstoreの.htmlのようなのでしょうか? –

答えて

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] 

そして、何あなたのアプローチにしたいが、これは、この条件を設定し達成することができ、サーバー内の静的ファイルへの直接アクセスを持っているので、静的ファイルは

を書き換え中ません
RewriteCond %{REQUEST_FILENAME} !-f 
関連する問題