2012-02-15 7 views
5

मैं अपनी साइट के लिए एक अलग डोमेन से सीएसएस फाइलों की सेवा करने की कोशिश कर रहा हूं।अपाचे। Htaccess: अलग डोमेन से .css फ़ाइलों की सेवा?

मैंने मिला मेरी साइट की .htaccess में निम्नलिखित प्रविष्टि (दस्तावेज़ जड़ में):

RewriteRule ^templates/*\.css$ http://css.mysite.com/templates/$1 [R=301,L] 

बस मिलान करने के इरादे के साथ:

http://www.mysite.com/templates/default/styles/main.css 

... और एक HTTP 301 भेजने रीडायरेक्ट करने के लिए:

http://css.mysite.com/templates/default/styles/main.css 

लेकिन क्या वास्तव में बुलाया जा रहा है:

http://css.mysite.com/templates/.css 

(मैं *.js के लिए ऊपर नकल और उन्हें js.mysite.com और सभी png & jpgs से सेवा करते हैं और उन्हें img.mysite.com से सेवा करने के लिए करना चाहते हैं।)

किसी भी अंतर्दृष्टि होगा बहुत खुबस। मुझे स्वीकार करना है, htaccess नियमों को फिर से लिखना हमेशा मुझे आकर्षित करना प्रतीत होता है।

+1

के साथ शुरू पुनः निर्देशित, आप एक तरीका मौजूद नहीं है बस * अनुरोध करने के लिए * दूसरे से सीधे सीएसएस यूआरएल, है ना? यही है, रीडायरेक्ट करने के बजाय सीधे अनुरोध करने के लिए पृष्ठों को बदलें? – Andrew

+0

मैं साइट को यथासंभव पोर्टेबल रखने की कोशिश कर रहा हूं। मुझे एहसास है कि मैं 301 रीडायरेक्ट के साथ हिट ले रहा हूं, लेकिन चीजों को .htaccess फ़ाइल में रखकर, अगर मुझे साइट को किसी नए डोमेन या सर्वर पर आपदा रिकवरी उद्देश्यों के लिए स्थानांतरित करने की आवश्यकता है तो बस .htaccess से लाइनों को हटा दें फ़ाइल स्थानीय रूप से सेवा के लिए सबकुछ वापस लौटाएगी। कम से कम, मेरा विचार यही है। :-) इस तरह से मैं सीएसएस फ़ाइलों को आंतरिक रूप से संपादित किए बिना सीएसएस को ओवरराइड कर सकता हूं। यह लाइव होने पर साइट को तंग कर दिया जाएगा। – gellenburg

उत्तर

7

इस कोशिश करो और मुझे पता है:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^css\. 
RewriteRule ^templates/(.*)\.css$ http://css.mysite.com/templates/$1.css [R=301,L] 

या एक अधिक "गतिशील रास्ता"

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)\.(js|css)$ http://$2.mysite.com/templates/$1.$2 [R=301,L] 
RewriteRule ^templates/(.*)\.(jpg|gif|swf|jpeg|png)$ http://imgs.mysite.com/templates/$1.$2 [R=301,L] 

यह एक जे एस और सीएसएस के लिए जाँच करें और फाइल एक्सटेंशन के आधार पर उप-डोमेन का उपयोग करेगा: तो .js js.mysite.com पर जाएंगे और .css css.mysite.com पर जायेगा और छवियों के लिए भी होगा लेकिन यह इसके बजाय imgs.mysite.com पर जाता है।

या इससे भी अधिक सामान्य हो:

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)$ http://media.mysite.com/templates/$1 [R=301,L] 

आप बस सुनिश्चित करने के लिए सब कुछ है कि templates

+0

दिलचस्प। मुझे लगता है कि मैं jpg.mysite.com, css.mysite.com, js.mysite.com, png.mysite.com, और gif.mysite.com बना सकता हूं। Http कनेक्शन समानांतर करने के बारे में बात करो! :-) मुझे लगता है कि हालांकि बहुत अधिक परेशानी होगी। मैंने आपका पहला उदाहरण आजमाया है और ऐसा लगता है कि "टेम्पलेट्स" के तहत सब कुछ सबडोमेन (केवल सीएसएस एक्सटेंशन नहीं) पर रीडायरेक्ट किया जा रहा है। :/ – gellenburg

+0

मैं सहमत हूं, आप "मीडिया" जैसे: media.mysite.com बना सकते हैं और वहां सबकुछ भी रीडायरेक्ट कर सकते हैं - मैंने अपना उत्तर –

+0

@ जेलेनबर्ग अपडेट किया है, ऐसा लगता है कि *** बहुत अजीब *** है कि सबकुछ ' css.mysite.com' अगर आपने BOZ के उदाहरण 1 में सही टाइप किया है। यह नियम केवल 'जीईटी/टेम्पलेट्स/* सीएसएस' के लिए आग लगाएगा। RegexpChecker.php का उपयोग करें और इस थ्रेड पर 301 जाल नोट करें: [डीबगिंग के लिए टिप्स। Htaccess नियमों को फिर से लिखना] [http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules) – TerryE

संबंधित मुद्दे