IIS7 URL रूट से उप निर्देशिका तक पुनर्निर्देशन [बंद]


83

मैं IIS7 के साथ विंडोज सर्वर 2008 का उपयोग कर रहा हूं। मैं उपयोगकर्ताओं को, जो करने के लिए आ रीडायरेक्ट करना होगा www.mysite.comकरने के लिए wwww.mysite.com/menu_1/MainScreen.aspx। यहाँ परियोजनाओं के लिए फ़ाइल संरचना है:

-Sites
 -Default Web Site
  -Menu_1
  -MenuService
  -VscWebService

मैं वास्तव में इस पर किसी भी मदद की सराहना करेंगे।


प्रोग्रामिंग और सर्वर प्रशासन के बीच एक अच्छी रेखा है (एक लाइन जो "देव ऑप्स" की लोकप्रियता के लिए तेजी से धुंधला हो रही है)। फिर भी, स्टैक ओवरफ्लो और सर्वर फाल्ट दोनों साइटों के बीच एक स्पष्ट अंतर बनाए रखता है, और यह सामग्री सर्वर फॉल्ट पर संबंधित है क्योंकि यह प्रोग्रामिंग की तुलना में वास्तव में टूल (IIS) को कॉन्फ़िगर करने के बारे में अधिक है।
मशीनगॉस्ट

जवाबों:


131

यही पर है। इस कोड को अपनी web.config फ़ाइल में जोड़ें :

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Redirect" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

यह 301 परमानेंट रीडायरेक्ट करेगा (URL ब्राउज़र में बदल जाएगा)। यदि आप ऐसे "पुनर्निर्देशित" को अदृश्य (पुनर्लेखन, आंतरिक पुनर्निर्देशित) करना चाहते हैं, तो इस नियम का उपयोग करें (केवल अंतर यह है कि "पुनर्निर्देशित" को "पुनर्लेखन" से बदल दिया गया है):

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Rewrite" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

2
जवाब देने के लिए धन्यवाद। यह अभी भी मेरे लिए काम नहीं कर रहा है। पहले मैंने इसे wwwroot web.config में जोड़ा और वहां काम नहीं किया। इसलिए मैंने सर्वर स्तर (सर्वर> साइट> डिफ़ॉल्ट वेबसाइट) पर यूआरएल रिवाइराइट खोला, लेकिन यह अभी भी काम नहीं कर रहा है। क्या मुझसे यहां कुछ गलत हो रहा है? आपकी मदद के लिए फिर से बहुत बहुत धन्यवाद।
user881148

2
@ user881148 नियम निश्चित रूप से काम कर रहा है - मैंने पोस्ट करने से पहले परीक्षण किया। 1) शायद इसे गलत क्रम / स्थान पर रखा गया है? नियमों का क्रम मायने रखता है: यदि आपके पास पहले से ही कुछ नियम हैं तो इस नियम को अन्य नियमों से पहले जोड़ें। 2) "सर्वर> साइटें> डिफ़ॉल्ट वेबसाइट" - यह सर्वर स्तर नहीं है - यह आईआईएस इंस्टॉलर द्वारा बनाई गई सामान्य सामान्य वेबसाइट है - इससे ज्यादा कुछ नहीं। 3) GUI (IIS Manager) के माध्यम से मैन्युअल रूप से यह नियम बनाने का प्रयास करें - यह सरल है - केवल कुछ फ़ील्ड भरने के लिए। 4) हो सकता है कि आपका ASP.NET रूटिंग सभी पुनर्लेखन को संभाल ले और URL रिवाइटर मॉड्यूल को अनदेखा कर दे। इस पल को किसी तरह जांचें (क्षमा करें, मैं ASP.NET में अच्छा नहीं हूं)।
LazyOne

आपके उत्तर के लिए फिर से धन्यवाद। मैंने आपके द्वारा ऊपर बताई गई सभी चीज़ों की जाँच की, और कोई अन्य नियम नहीं जोड़े गए हैं। मैंने इसे डिफ़ॉल्ट वेबसाइट> URL रीराइट के माध्यम से जोड़ने की कोशिश की और यह भी काम नहीं किया। मेरे पास कोई भी ASP.NET नहीं है।
user881148

1
@mythofechelon हां, URL रिवाइटर मॉड्यूल अभी भी बंडल नहीं है, यहां तक ​​कि IIS 10 (विंडोज 10 / विंडोज सर्वर 2016) के साथ भी और अलग से इंस्टॉल किया जाना है।
LazyOne

1
मैं सुझाव दूंगा कि <URL url = "^ \ /? $" /> यह सुनिश्चित करने के लिए कि URL के अंत में उपयोगकर्ता द्वारा संकेत दिया गया है या नहीं।
मैरिज रेविकास

47

मुझे लगता है, यह बिना IIS URL रिवाइटर मॉड्यूल के किया जा सकता है। <httpRedirect>वाइल्डकार्ड का समर्थन करता है, इसलिए आप इसे इस तरह कॉन्फ़िगर कर सकते हैं:

  <system.webServer>
    <httpRedirect enabled="true">
      <add wildcard="/" destination="/menu_1/MainScreen.aspx" />
    </httpRedirect>
  </system.webServer>

ध्यान दें कि आपको IIS पर "HTTP पुनर्निर्देशन" सुविधा सक्षम होना चाहिए - HTTP पुनर्निर्देशन देखें


यह पूरी तरह से काम करता है।
निक

16

मुझे यह स्वीकार किए गए उत्तर के साथ काम नहीं मिला, मुख्य रूप से क्योंकि मुझे नहीं पता था कि उस कोड को कहां दर्ज करना है। मैंने URL रीराइट टूल के कुछ स्पष्टीकरण के लिए हर जगह देखा, जो समझ में आया, लेकिन कोई भी नहीं मिला। मैं IIS में HTTP पुनर्निर्देशन उपकरण का उपयोग कर समाप्त हुआ।

  1. अपनी साइट चुनें
  2. IIS अनुभाग में HTTP पुनर्निर्देशित करें पर क्लिक करें (सुनिश्चित करें कि भूमिका सेवा स्थापित है)
  3. "इस गंतव्य के लिए पुनर्निर्देशित अनुरोध" की जाँच करें
  4. वह स्थान डालें जहाँ आप पुनर्निर्देशित करना चाहते हैं। आपके मामले में "wwww.mysite.com/menu_1/MainScreen.aspx"
  5. पुनर्निर्देशित व्यवहार में, मैंने पाया कि मुझे इस निर्देशिका में सामग्री (न कि उपनिर्देशिका) में केवल पुनर्निर्देशित अनुरोधों की जांच करनी थी, या यह लूप में चला जाएगा। देखें कि आपके लिए क्या काम करता है।

उम्मीद है की यह मदद करेगा।


1
इस समाधान के साथ एक समस्या है। यदि पुनर्निर्देशित / फिर http://server/से लिखना http://server/Folder/, एक्सेस करना http://server/Folder(नोट नो ट्रेलिंग स्लैश) पर पुनर्निर्देशित http://server/Folder/Folderकिया जाएगा, जो संभवतः 404
लौटाएगा।

मुझे इस पर काम करते हुए कुछ समय हो गया है, लेकिन मुझे याद है कि मेरे साथ ऐसा हो रहा था और मेरे कदम # 5 का कारण था। क्या आपने जाँच की है?
जारोद

1
मैं ईमानदारी से याद नहीं कर सकता, लेकिन मुझे विश्वास है। ध्यान दें कि IIS के ऊपर मेरे मामले में निर्देशिका के बजाय एक फ़ाइल के रूप में फ़ोल्डर / फ़ोल्डर दिखाई देता है, इसलिए यह उपनिर्देशिका पर पुनर्निर्देशित करता है और "नहीं (उपनिर्देशिका)" बहिष्करण द्वारा कवर नहीं किया जाएगा।
arid1

4

आपको इसे Microsoft से डाउनलोड करने की आवश्यकता है: http://www.microsoft.com/en-us/download/details.aspx?id=7435

टूल को "IIS 7 के लिए Microsoft URL रिवर्ट मॉड्यूल 2.0" कहा जाता है और इसे Microsoft द्वारा निम्नानुसार वर्णित किया गया है: "URL रिवाइटर मॉड्यूल 2.0 अनुरोधित URL को बदलने के लिए एक नियम-आधारित पुनर्लेखन तंत्र प्रदान करता है, इससे पहले कि वे वेब सर्वर द्वारा संसाधित हों और प्रतिक्रिया प्रतिक्रिया सामग्री के लिए। इससे पहले कि यह HTTP ग्राहकों को परोसा जाता है "

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.