2010-12-14 15 views
9

मैं निम्नलिखित फ़ाइल है कहते हैं:यूआरएल/उपडोमेन पुनर्लेखन (htaccess)

http://www.example.com/images/folder/image.jpg

मैं

http://s1.example.com/folder/image.jpg

मैं बात करने के लिए एक htaccess फिर से लिखने के कैसे कर सकते हैं पर यह सेवा करना चाहते यह करने के लिए?

उदाहरण के लिए की तरह

, मैं एक उप डोमेन बनाने s1.example.com और उसके बाद वह उप डोमेन पर, मैं किसी भी फाइल बात करने के लिए एक htaccess नियम जोड़ने, से http://www.example.com/images/

यह खींचने के लिए की सेवा के रूप में इस तरह से कार्य फ़ाइलों की सेवा करता है एक cookieless डोमेन से सामग्री?

उत्तर

18

पहले मुझे कुकीज डोमेन की अवधारणा के बारे में कुछ बात करने दें। आम तौर पर, http पर कुछ भी अनुरोध करते समय, अनुरोध के साथ कोई भी प्रासंगिक कुकीज़ भेजी जाती है। कुकीज, इस बात पर निर्भर हैं कि वे किस डोमेन से आते हैं। एक कुकीज डोमेन का उपयोग करने का विचार यह है कि आप स्थिर सामग्री को स्थानांतरित करते हैं जो कुकीज़, छवियों की तरह एक अलग डोमेन पर नहीं है ताकि उस अनुरोध के साथ कोई कुकी नहीं भेजी जाएगी। यह यातायात की एक छोटी राशि में कटौती करता है।

ऐसा करने से आपको कितना लाभ मिलता है पृष्ठ के प्रकार पर निर्भर करता है। आपके पास जितनी अधिक छवियां हैं, उतनी ही अधिक आपको मिलती है। यदि आपकी साइट छोटी छवियों का एक बड़ा गुच्छा लोड करती है, जैसे अवतार या छवि थंबनेल, तो आपके पास बहुत कुछ हासिल हो सकता है। इसके विपरीत, यदि आपकी साइट किसी भी कुकीज़ का उपयोग नहीं करती है, तो आपके पास कुछ भी हासिल करने के लिए नहीं है। यह पूरी तरह से संभव है कि आपका पृष्ठ काफी तेज़ी से लोड नहीं होगा, अगर यह केवल छवियों की एक छोटी मात्रा का उपयोग करता है, जिसे पेज लोड के बीच कैश किया जाएगा। ध्यान में रखने की

एक बात, भी, कि example.com के लिए निर्धारित कुकीज़ को "s1." example.com को उप डोमेन है s1.example.com करने के लिए अनुरोध के साथ भेजा जाएगा है। कुकी रिक्त स्थान को अलग करने के लिए आपको www. (या अपनी पसंद के किसी अन्य सबडोमेन) का उपयोग करने की आवश्यकता है।

दूसरा, यदि आप तय करते हैं कि एक कुकीज डोमेन वास्तव में कुछ करने योग्य है, तो हम कार्यान्वयन के बारे में बात करते हैं।

शिखर का समाधान खराब है! जबकि समाधान सतह पर काम करने लगता है, यह वास्तव में एक cookieless डोमेन का उपयोग करने के उद्देश्य को हरा देता है। प्रत्येक छवि के लिए, पहले s1. यूआरएल की कोशिश की जाती है। s1. यूआरएल फिर www. डोमेन पर रीडायरेक्ट करता है जो एक दूसरा http अनुरोध ट्रिगर करता है। यह एक नुकसान है, इससे कोई फर्क नहीं पड़ता कि आप इसे कैसे देखते हैं। आपको क्या चाहिए को फिर से लिखें, जो वेब सर्वर पर आंतरिक रूप से यूआरएल को बदलता है, ब्राउजर के बिना भी महसूस करता है।

सादगी के लिए, मैं यह सोचते हैं रहा है कि सभी डोमेन समान निर्देशिका को इंगित, ताकि www.example.com/something = example.com/something = s1.example.com/something = blub.example.com/something। यदि आपको वास्तव में "www.example.com/images" में भौतिक रूप से चित्रों को स्टोर करने की आवश्यकता है, तो यह चीजों को आसान बनाता है।

मैं एक .htaccess है कि इस तरह एक छोटे से कुछ लग रहा है की सलाह देते हैं:

# Turn on rewrites 
RewriteEngine On 

# Rewrite all requests for images from s1, so they are fetched from the right place 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
# Prevent an endless loop from ever happening 
RewriteCond %{REQUEST_URI} !^/images 
RewriteRule (.+) /images/$1 [L] 

# Redirect http://s1.example.com/ to the main page (in case a user tries it) 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
RewriteRule ^$ http://www.example.com/ [R=301,L] 

# Redirect all requests with other subdomains, or without a subdomain to www. 
# Eg, blub.example.com/something -> www.example.com/something 
#  example.com/something  -> www.example.com/something 
RewriteCond %{HTTP_HOST} !^www\.example\.com 
RewriteCond %{HTTP_HOST} !^s1\.example\.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# Place any additional rewrites below. 
+0

+1 है !! आपने मुझे पूरी कुकी-कम कहानी को बाईपास करने के लिए अकेले मुझे विश्वास दिलाकर मुझे फिर से काम करने के घंटे बचाए। मेरी साइट केवल 10 छवियों का उपयोग करती है, जो सबडोमेन पर पूरी सामग्री को रीडायरेक्ट करने के दौरान लायक नहीं है। इस विषय पर, क्या आप जानते हैं कि एसईओ रैंकिंग के मामले में, yellowhorse.domain.com या domain.com/yellowhorse का उपयोग करना बेहतर है? – Sam

1

आप s1.example.com www.example.com से यातायात पुनर्निर्देशित करने का क्या मतलब है, तो www.example.com

RewriteCond %{HTTP_HOST} ^(s1\.example\.com)
RewriteRule (.*) http://www.example.com%{REQUEST_URI}[R=301,NC,L]

पर निम्नलिखित htaccess का उपयोग यदि यह वह नहीं है जिसे आप ढूंढ रहे हैं, तो सवाल आगे बढ़ाएं।

1

बस जो चाहते मुझे इस के लाभों की जांच की जा सकती है लोगों की सामान्य जानकारी के लिए। जो मैं पढ़ रहा हूं उससे यह सिर्फ http अनुरोधों के साथ भेजे गए कुकीज़ को समाप्त करने के अपस्ट्रीम ओवरहेड पर काट नहीं रहा है। स्पष्ट रूप से कई ब्राउज़र अधिकतम डोमेन को 1 डोमेन/सर्वर से 6 समवर्ती तक सीमित करते हैं। तो यदि आपके पास एक diff सर्वर पर एक अलग डोमेन है तो आप इसे 12 तक दोगुना कर देंगे। मेरे लिए कौन सा गंभीर गति वृद्धि के लिए यहां मुख्य क्षमता की तरह लगेगा।

हालांकि वैसे भी, अगर मैं इसे सही ढंग से समझ रहा हूं। स्थिर सामग्री की सेवा करने वाला अन्य डोमेन मुख्य डोमेन से दूसरे सर्वर पर स्थित होना चाहिए। असल में समझ में आता है, उग्र फ़ायरफ़ॉक्स उपयोगकर्ता और ट्वीकर। जब आप फ़ायरफ़ॉक्स में कॉन्फ़िगरेशन सेटिंग्स को चेक करते हैं तो प्रति सर्वर अधिकतम कनेक्शन डिफ़ॉल्ट रूप से 6 पर सेट होते हैं। एक व्यक्ति मैन्युअल रूप से इसे अधिकतम 8 तक बढ़ा सकता है लेकिन अधिकांश फ़ायरफ़ॉक्स उपयोगकर्ता ब्राउज़र को संशोधित करने के तरीके से परिचित होने में पर्याप्त समय नहीं व्यतीत करते हैं और इसे 6 के डिफ़ॉल्ट अधिकतम पर छोड़ देते हैं।

सुनिश्चित नहीं है कि कितने डिफ़ॉल्ट रूप से सेट किए गए अन्य ब्राउज़र और फिर पुराने ब्राउज़र संस्करण हैं जो अभी भी विचार करने के लिए उपयोग में हैं। नीचे की रेखा ... सही समझ में आता है कि ब्राउजर को दो सर्वरों का उपयोग करके कनेक्शन की कुल संख्या को दोगुना करने में सक्षम करना लोडटाइम सुधार होना चाहिए। एक ही सर्वर पर उप-डोमेन का उपयोग करना एक व्यक्ति उस का लाभ लेने में सक्षम नहीं होगा।

0

मुझे लगता है कि आप इसे पीछे की ओर ले सकते हैं, (या संभवतः मैं कर सकता हूं)। स्पष्टीकरण के लिए, यदि आप कुकी-कम सबडोमेन & को लागू कर रहे हैं तो कम से कम इस मामले में www. का आधार URL है, उदाहरण के लिए कुकीज़ www पर सेट की गई हैं, उदाहरण के लिए: एक प्रमुख कुकी सेटर Google Analytics है, इसलिए जब मेरी स्क्रिप्ट मेरी पर सेट होती है साइट यह इस तरह दिखता है:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'analytics-acc-#], 
['_setDomainName', '[www.valpocreative.com][1]'], 
['_trackPageview']); 

आप यहाँ देख सकते हैं मैं www करने के लिए अपने मुख्य डोमेन सेट कि, मुझे ठीक कर लें मैं अपने मामले में गलत हूँ मैं गैर www उपडोमेन & अन्य नहीं करने के लिए www रीडायरेक्ट करने के लिए की आवश्यकता होगी निकलने का रास्ता। यह भी cname जैसे इस तरह के एक insightfull जवाब nitro2k01 के लिए (www.domain.com करने के लिए cname= "cdn" इशारा) मेरी cpanel पर किए गए सेटअप

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