2011-04-05 18 views
7

के साथ समस्याएं हैं, मैं अपनी साइट की एक उपनिर्देशिका के लिए रिवर्स प्रॉक्सी करने के लिए आईआईएस 7.5 स्थापित करने पर काम कर रहा हूं।एआरआर का उपयोग करते हुए आईआईएस रिवर्स प्रॉक्सी निर्देशिका स्तर

<clear /> 
<rule name="Reverse Proxy to Community" stopProcessing="true"> 
<match url="^community/qa/(.*)" /> 
<action type="Rewrite" url="http://xxx.xxx.xxx.xxx/{R:1}" logRewrittenUrl="true" /> 
</rule> 

आईपी पते के अपाचे और एक Django साइट के साथ एक नेटवर्क linux बॉक्स को अंक:

यहाँ web.config यूआरएल-पुनर्लेखन है।

मैं क्या चाहता हूँ
/समुदाय/क्यूए के लिए सभी अनुरोध/* निर्दिष्ट आंतरिक IP पर पुनः निर्देशित किया है।

क्या होता है
/समुदाय/क्यूए/- देता है 404 (पर मुख्य आईआईएस सर्वर)
/समुदाय/क्यूए/प्रश्न/- देता है 404 (पर मुख्य आईआईएस सर्वर)
- लेकिन -
/समुदाय/क्यूए/प्रश्न/पूछें/काम करता है !!!
/समुदाय/क्यूए/प्रश्न/अनुत्तरित/काम करता है !!

तो ऐसा लगता है कि यह उन सभी यूआरएल के लिए काम करता है जो शुरुआती बिंदु से 2 उपनिर्देशिकाएं गहरी हैं।

यह सिर्फ मेरे लिए अजीब लगता है, और मैं इसे समझ नहीं सकता।

किसी भी मदद के लिए अग्रिम धन्यवाद।

उत्तर

14

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

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

अपने मामले /community/qa/ में और /community/qa/questions/ काम नहीं है, क्योंकि यह यूआरएल ढांचा दिया मैच होगा और के रूप में व्याख्या की गई हैं:

/समुदाय/क्यूए/---> नियंत्रक = "समुदाय", कार्रवाई = "क्यूए"

/समुदाय/क्यूए/सवाल/---> नियंत्रक = "समुदाय", कार्रवाई = "क्यूए", पैरामीटर: id = "सवाल"

यदि आपके पास ऐसे नियंत्रक और कार्य नहीं हैं तो आपको Http नहीं मिलेगा।

/community/qa/questions/ask/ और /community/qa/questions/unanswered/ काम करेगा, क्योंकि वे अपने सिस्टम में किसी भी UrlRouting पैटर्न से मेल नहीं खाते।

routes.IgnoreRoute("community/qa/{*pathInfo}"); 
+0

धन्यवाद:

तो सरल समाधान अपने UrlRouting विन्यास में जोड़ने के लिए (जब वेब अनुप्रयोग शुरू होता है) अपने यूआरएल के लिए नियम की अनदेखी है! यूआरएल पुनर्लेखन का आदेश मदद करता है! –

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