2011-12-28 12 views
7

के साथ सीएसएस फ़ाइलों के अंदर लिंक के लिए पुनर्लेखन मैं अपने दोस्तों के लिए घर पर वापस प्रॉक्सी सर्वर स्थापित करने का प्रयास कर रहा हूं। मैं वर्तमान में वेब साइट पर ट्यूटोरियल का अनुसरण कर रहा हूं (http://blogs.iis.net/carlosag/archive/2010/04/01/setting-up-a-reverse-proxy-using-iis-url-rewrite-and-arr.aspx) लेकिन मैं एक अजीब समस्या में आया हूं।URL को ठीक करने के लिए कैसे करें IIS7

मैंने www.pandora.com पर रीडायरेक्ट/पैंडोरा को रीडायरेक्ट करने का प्रयास किया है लेकिन सीएसएस फाइलों के अंदर लिंक बदल नहीं रहे हैं। इसके अलावा वे अभी भी लोकहोस्ट/आईएमजी/.. पथ से जुड़े हुए हैं। उन्हें लोकहोस्ट/पैंडोरा/आईएमजी/.. पथ पर रीडायरेक्ट किया जाना चाहिए।

पहले पृष्ठ पर

<link rel="shortcut icon" href="/pandora/favicon.ico" type="image/x-icon" /> 
<link rel="icon" type="image/ico" href="/pandora/favicon.ico" /> 

<meta name="viewport" content="width=device-width, initial-scale=1.0"> 

<link rel="stylesheet" href="css/compiled.css?v=95845013"> 
<link id="valanceStyle" rel="stylesheet" type="text/css" href="/pandora/static/valances/pandora/default/design.css"/> 

से

sniplet आप लोग मुझे इस समस्या को दूर करने में मदद कर सकते हैं?

उत्तर

11

एआरआर के साथ संयोजन में आउटबाउंड रीराइट नियम के साथ ऐसा करना संभव है। निम्नलिखित नियम यह करना चाहिए:

<system.webServer> 
    <rewrite> 
     <outboundRules> 
      <rule name="Rewrite image URLs in CSS response" preCondition="IsCSS"> 
       <match pattern="localhost/img/" /> 
       <action type="Rewrite" value="localhost/pandora/img/" /> 
      </rule> 
      <preConditions> 
       <preCondition name="IsCSS"> 
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="text/css" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
</system.webServer> 

आपको निश्चित रूप से स्थानीय डोमेन नामों के साथ स्थानीयहोस्ट को प्रतिस्थापित करना चाहिए। यदि आप किसी भिन्न डोमेन नाम से पुनः लिख रहे हैं तो मिलान टैग में वह डोमेन नाम होना चाहिए जिसमें आप प्रतिस्थापित करना चाहते हैं और एक्शन टैग में वह डोमेन नाम होना चाहिए जिसमें आप इसे बदलना चाहते हैं।

चूंकि सीएसएस HTML नहीं है, तो आप यूआरएल रीराइट मॉड्यूल की टैग फ़िल्टरिंग सुविधा का उपयोग नहीं कर सकते हैं। तो यह केवल सीएसएस फ़ाइल की पूरी सामग्री के खिलाफ नियमित अभिव्यक्ति मिलान कर सकता है जो संभावित रूप से बड़ी सीएसएस फ़ाइलों पर सीपीयू गहन हो सकता है। यदि आप जानते हैं कि कितने यूआरएल को प्रतिस्थापित करने की आवश्यकता है तो आप यूआरएल रीराइट मॉड्यूल को देखने वाले मैचों की संख्या को सीमित करने के लिए <match> टैग पर occurrences="x" विशेषता जोड़ सकते हैं। सीएसएस नियमों को सीएसएस फ़ाइल के शीर्ष पर ले जाने का भी प्रयास करें। उदा .:

<action type="Rewrite" value="localhost/pandora/img/" occurrences="3" /> 

तुम भी IIS में उपयोगकर्ता मोड कैशिंग को सक्षम और <outboundRules> टैग करने के लिए विशेषता rewriteBeforeCache="yes" जोड़ने के लिए आईआईएस कैश फिर से लिखा सामग्री कर सकते हैं। उदा .:

<outboundRules rewriteBeforeCache="yes"> 

आउटबाउंड पुनर्लेखन नियमों के बारे में अधिक उपयोगी जानकारी और युक्तियों this blog post में पाया जा सकता।

+0

आप इसे किस फाइल में लिख रहे हैं? – ZeroDivide

+1

यह वेबसाइट की मूल निर्देशिका में 'web.config' में होना चाहिए। –

+0

यह 500 सर्वर त्रुटि का कारण बनता है। मुझे इसे किस नोड में रखना चाहिए? – ZeroDivide

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