2012-02-02 15 views
15

Tengo algunos problemas con mod_geoip para un sitio de comercio electrónico que tiene 3 tiendas diferentes. Tenemos nuestra tienda principal en root/store, pero también tenemos tiendas en root/ukstore y root/austore. La raíz/tienda principal contiene directorios/skin,/media y/js que contienen todos los css, imágenes y javascripts. Con esta configuración actual, las URL intercambian sin problemas la base, pero deja intacto el resto de la URL, de modo que si un usuario del Reino Unido va a la raíz/tienda/categoría/producto/se redirecciona a la raíz/ukstore/categoría/producto/.reglas de reescritura htaccess con mod_GeoIP

2 cosas que son problemas ahora.

Cuando un cliente accede a una página segura como el pago o la cuenta, las URL para css y javascript se reescriben en root/ukstore/skin o root/ukstore/js. ¿Hay algo que me falta en cuanto a SSL para esas URL?

En segundo lugar, si un usuario de Sudáfrica accede a la tienda, se reescribe en la tienda del Reino Unido y todas las imágenes css, js están perfectamente vinculadas a la tienda/máscara, pero si un usuario del Reino Unido accede al almacenar, a continuación, las URL para css, js, y las imágenes están tratando de ser reescrito a raíz/ukstore/piel

Aquí está el código en mi archivo htaccess en la raíz/tienda. Cada tienda también tiene su propio archivo htaccess, pero sin mucho contenido.

<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> 

¡Cualquier ayuda sería muy apreciada!

+0

¿Sus direcciones css/image comienzan con una barra diagonal es decir '/ store/skin/my.css' o son' skin/my.css'? –

+0

Es una configuración magento, por lo que en realidad son /store/skin/frontend/default/theme/css/my.css. Pero dentro del CSS son url (../ images/bg-main3.jpg) – coloradohiker

+0

Dado que el CSS tiene una barra diagonal, la primera regla evitará que se reescriba. Cuando dijiste 'tratando de ser reescrito a root/ukstore/skin' ¿estás viendo redireccionamientos a'/ukstore/skin' o es así en el .html para Ukstore? –

Respuesta

1

El problema es que está utilizando las condiciones de reescritura en un contexto .htaccess para que las condiciones sean relativas al directorio en el que se encuentra y es por eso que las condiciones de reescritura relativas a la máscara, js y medios mencionados en la pregunta no coincide. Usted debe reemplazarlos con algo como:

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

o, como se menciona en la guía mod_rewrite (http://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteRule)

Si desea igualar en contra de la dirección URL de la ruta completa en un directorio por directorio (htaccess) RewriteRule, use la variable% {REQUEST_URI} en RewriteCond.

0

redirección basada en IP podría fallar y lo que por lo general la gente quiere es basado en el lenguaje redirección. Puede leer el idioma configurado en el navegador del usuario y simplemente redirigirlo a un idioma que tenga su web. Al igual que:

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

Y lo que quiere en su enfoque es tener un acceso directo a los archivos estáticos en el servidor, esto se puede lograr establecer esta condición, por lo que los archivos estáticos no se les reescrito

RewriteCond %{REQUEST_FILENAME} !-f 
Cuestiones relacionadas