2012-02-02 5 views
15

के साथ नियमों को फिर से लिखें, मुझे एक ईकॉमर्स साइट के लिए mod_geoip के साथ कुछ समस्याएं हैं जिनमें 3 अलग-अलग स्टोर हैं। हमारे पास रूट/स्टोर पर हमारा मुख्य स्टोर है, लेकिन रूट/यूकेस्टोर और रूट/ऑस्टोर में स्टोर भी हैं। मुख्य रूट/स्टोर में एक/त्वचा,/मीडिया, और/जेएस निर्देशिकाएं होती हैं जिनमें सभी सीएसएस, छवियां और जावास्क्रिप्ट शामिल होते हैं। इस वर्तमान सेटअप के साथ, यूआरएल बेकार ढंग से आधार को स्वैप कर देते हैं, लेकिन बाकी यूआरएल को बरकरार रखते हैं ताकि यूके का कोई उपयोगकर्ता रूट/स्टोर/श्रेणी/उत्पाद/रूट/यूकेस्टोर/श्रेणी/उत्पाद/।htaccess mod_GeoIP

2 चीजें जो अब समस्याएं हैं।

जब भी कोई ग्राहक चेकआउट या खाते जैसे सुरक्षित पृष्ठ तक पहुंचता है, तो सीएसएस और जावास्क्रिप्ट के लिए URL रूट/ukstore/त्वचा या रूट/ukstore/js पर फिर से लिखे जा रहे हैं। क्या उन यूआरएल के लिए एसएसएल के संबंध में कुछ याद आ रही है?

दूसरा, यदि दक्षिण अफ्रीका का कोई उपयोगकर्ता स्टोर तक पहुंचता है, तो उन्हें यूके स्टोर में फिर से लिखा जाता है और सभी सीएसएस, जेएस, छवियों को स्टोर/त्वचा से पूरी तरह से जोड़ा जाता है, लेकिन यदि यूनाइटेड किंगडम का कोई उपयोगकर्ता एक्सेस करता है स्टोर करें तो सीएसएस, जेएस, और छवियों के लिए यूआरएल रूट/ukstore/त्वचा

रूट/स्टोर में मेरी 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

अपने सीएसएस/छवि यूआरएल एक अग्रणी स्लैश यानी '/ स्टोर/त्वचा/my.css' के साथ शुरू या वे' त्वचा/my.css' हैं क्या? –

+0

यह एक Magento सेटअप है, इसलिए वे वास्तव में /store/skin/frontend/default/theme/css/my.css हैं। लेकिन सीएसएस के भीतर वे यूआरएल कर रहे हैं (../ छवियों/bg-main3.jpg) – coloradohiker

+0

सीएसएस देखते हुए शुरुआत में स्लैश है, पहला नियम यह फिर से लिखा जा रहा नहीं कर पाएगा। जब आपने कहा कि 'रूट/ukstore/skin' पर पुनर्लेखित करने का प्रयास कर रहे हैं, तो क्या आप रीडायरेक्ट को '/ ukstore/skin' पर देख रहे हैं या यह Ukstore के लिए .html में है। –

उत्तर

1

समस्या यह है कि आप एक .htaccess संदर्भ में पुनर्लेखन स्थितियों का उपयोग कर रहे हैं, इसलिए स्थिति आपके द्वारा निर्देशिका में संबंधित होनी चाहिए और यही कारण है कि त्वचा, जेएस और मीडिया के सापेक्ष पुनर्लेखन की स्थिति सवाल मेल नहीं खाता है।

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

या, mod_rewrite गाइड में उल्लेख किया (http://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteRule)

आप में पूरा URL पथ के खिलाफ मैच के लिए चाहते हैं, तो एक प्रति निर्देशिका (: आप उन की तरह कुछ के साथ बदलना चाहिए htaccess) पुनर्वितरण नियम, रिवाइटकंड में% {REQUEST_URI} चर का उपयोग करें।

0

आईपी आधारित पुनर्निर्देशन विफल हो सकता है और क्या आम तौर पर लोग चाहते भाषा के आधार पर पुनर्निर्देशन है। आप उपयोगकर्ता ब्राउज़र में कॉन्फ़िगर की गई भाषा को पढ़ सकते हैं और उन्हें अपने वेब पर एक भाषा में रीडायरेक्ट कर सकते हैं। बस ऐसे ही:

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