2012-02-02 5 views
15

3 개의 다른 점포가있는 전자 상거래 사이트에 대해 mod_geoip에 몇 가지 문제가 있습니다. 우리는 루트/저장소에 우리의 메인 저장소를 가지고 있지만 또한 루트/ukstore 및 루트/austore에 상점이 있습니다. 기본 루트/저장소에는 모든 CSS, 이미지 및 자바 스크립트가 들어있는/skin,/media 및/js 디렉토리가 있습니다. 이 현재 설정을 사용하면 URL이 완벽하게 기본 폴더로 바뀌지 만 나머지 URL은 그대로 유지되므로 영국 사용자가 root/store/category/product /로 이동하면 root/ukstore/category/product /로 리디렉션됩니다. .htaccess mod_GeoIP을 사용하여 규칙 다시 작성

2 가지가 현재 문제입니다.

고객이 체크 아웃이나 계정과 같은 보안 페이지에 액세스 할 때마다 css 및 javascript의 URL이 root/ukstore/skin 또는 root/ukstore/js로 다시 작성됩니다. 해당 URL에 대해 SSL과 관련하여 제가 누락 된 것이 있습니까?

두 번째로, 남아프리카 공화국 사용자가 상점에 액세스하면 영국 상점에 다시 쓰여지고 css, js 이미지는 모두 상점/스킨으로 완벽하게 다시 연결되지만 영국 사용자가 store를 입력하면 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/이미지 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에 선행 슬래시가있는 경우 첫 번째 규칙은 재 작성되지 않도록합니다. '루트/ukstore/스킨으로 다시 작성하려고했다 '고 말했을 때'/ 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] 

이이 조건을 설정 달성 할 수 있으므로 정적 파일은

을 rewrited되지 않습니다
RewriteCond %{REQUEST_FILENAME} !-f