2008-09-05 17 views
137

क्या किसी साइट के HTTP: // संस्करण में अपने HTTPS: // समकक्ष पर जाने के सभी प्रयासों को पुनर्निर्देशित करने का कोई साफ तरीका है?आईआईएस 7: HTTP-> HTTPS स्वच्छता

+0

उत्तर जेम्स Kovac के ब्लॉग पर पाया जा सकता: http://jameskovacs.com/2007/05/09/how-to-autoredirect-to-a-sslsecured-site- इन-आईआईएस/ – cpuguru

+0

यदि आप आईआईएस 7 और आर 2 पर हैं [यहां] (http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using- url-rewrite-2-0 /) एक गाइड है जो काम करता है और सबसे अधिक "साफ" –

उत्तर

173

मुझे लगता है कि सबसे साफ तरीका here on IIS-aid.com जैसा वर्णन किया गया है। यह केवल web.config है और इसलिए यदि आप सर्वर बदलते हैं तो आपको 403.4 कस्टम त्रुटि पृष्ठ या अन्य विशेष अनुमतियों के साथ चलने वाले सभी चरणों को याद रखने की आवश्यकता नहीं है, यह बस काम करता है। एसएसएल

  • त्रुटि पृष्ठ> की आवश्यकता होती है - -> 403.4 त्रुटि पर -

    <configuration> 
        <system.webServer> 
        <rewrite> 
         <rules> 
         <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
          <match url="(.*)" /> 
          <conditions> 
           <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
          </conditions> 
          <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /> 
         </rule> 
         </rules> 
        </rewrite> 
        </system.webServer> 
    </configuration> 
    
  • +4

    यह पूरी तरह से काम करता है, और बोनस अंक के लिए यह पूरी तरह आत्मनिर्भर है इसलिए आपको स्वीकार्य उत्तर – WickyNilliams

    +1

    में उल्लिखित एक नई वेबसाइट बनाने की आवश्यकता नहीं है, यह फ़ाइल प्रकार के बावजूद सभी यूआरएल के लिए यह आग होगी। जैसे एक txt फ़ाइल के लिए एक सीधा यूआरएल? – Cheekysoft

    +9

    यह अपवाद के साथ मेरे लिए काम करता है कि मुझे रीडायरेक्ट यूआरएल को https: // {HTTP_HOST} {REQUEST_URI} –

    -4

    मुझे लगता है कि 'साफ-सफाई' से आपका मतलब 300 रीडायरेक्ट जैसा है। बहुत सारे सर्वरों के लिए कॉन्फ़िगर करें & भाषा here

    5

    एक साफ तरीका केवल http -> https से यूआरएल योजना को बदलता है और बाकी सब कुछ समकक्ष छोड़ देता है। यह सर्वर-साइड होना चाहिए ताकि कोई ब्राउज़र समस्या न हो।

    JPPinto.com पर यह कैसे किया जाता है, इस पर Step-By-Step instructions है, सिवाय इसके कि वे सर्वर-साइड रीडायरेक्ट के बजाय जावास्क्रिप्ट (HttpRedirect.htm) का उपयोग करते हैं। किसी कारण से, यदि आप 'दोस्ताना HTTP त्रुटि संदेश दिखाएं' सक्षम हैं, तो डिफ़ॉल्ट रूप से चालू होने पर, मैं जावा को जावास्क्रिप्ट चला नहीं सकता। लिपि के साथ एक और बात यह है कि पथ के लिए पुनर्निर्देशन एफएफ या क्रोम में भी काम नहीं करता था। स्क्रिप्ट हमेशा रूट पर रीडायरेक्ट करता है। (शायद मुझे कुछ याद आया है, क्योंकि इसे पथ पर रीडायरेक्ट करना चाहिए।)

    इन कारणों से मैंने रीडायरेक्ट के लिए एएसपी पेज का उपयोग किया है। नकारात्मकता यह है कि सर्वर पर क्लासिक एएसपी सक्षम होना आवश्यक है।

    ओप्सनब्लॉग में ASP script and instructions है जो आईआईएस 6 के साथ अच्छी तरह से काम करता है।

    आईआईएस 7 के साथ इस विधि का उपयोग करके मुझे कुछ समस्याएं आई हैं। यूजर इंटरफेस ज्यादातर मुद्दों पर है, क्योंकि आईआईएस 7 कुछ याद करने में वाकई आसान बनाता है।

    • सबसे पहले, आपको वेब सर्वर भूमिका सुविधा के रूप में एएसपी स्थापित करने की आवश्यकता है।
    • दूसरा, वर्चुअल निर्देशिका का उपयोग करके आईआईएस 7 में अपेक्षित काम नहीं किया गया था और मैंने इसे डीबग करने का प्रयास नहीं किया था। इसके बजाए, मैंने फ़ाइल को साइट के रूट फ़ोल्डर में रखा और यूआरएल '/SSLRedirect.asp' को 403.4 त्रुटि पृष्ठ में संदर्भित करने के लिए उपयोग किया।
    • अंतिम, सबसे कठिन हिस्सा, आप SSLRedirect.asp के लिए SSL को लागू नहीं करना चाहिए। अन्यथा आपको 403.4 त्रुटि मिल जाएगी। ऐसा करने के लिए आप आईआईएस 7 'कंटेंट व्यू' में फ़ाइल लेते हैं, और 'फीचर्स व्यू' पर स्विच करते हैं ताकि आप एकल फाइल के लिए एसएसएल सेटिंग्स को संपादित कर सकें और 'एसएसएल की आवश्यकता' चेकबॉक्स को अक्षम कर सकें।

    आईआईएस प्रबंधक को हेडर में फ़ाइल का नाम दिखाना चाहिए।

    +1

    JPPinto.com पर दिए गए निर्देशों को हाइलाइट करने के लिए अद्यतन किया गया है कि यह आईआईएस 7.5 या आर 2 पर काम नहीं करता है। वे कहते हैं कि आईआईएस के नए संस्करणों में सुरक्षा में बदलाव के कारण आपको लॉक उल्लंघन मिलेगा। वे यूआरएल रीवाइट 2.0 विधि का उपयोग करने का सुझाव देते हैं (@toxaq से उत्तर के अनुसार समान दृष्टिकोण)। – AussieRob

    9

    सबसे आसान और साफ समाधान मैंने पाया

    1. एसएसएल सेटिंग्स में किया गया था> HTTPS पर रीडायरेक्ट साइट

    2. त्रुटि पृष्ठों में -> विशेषताएं संपादित करें सेटिंग्स ...-> दूरस्थ अनुरोध के लिए स्थानीय अनुरोधों और कस्टम त्रुटि पृष्ठों के लिए विस्तृत त्रुटियां सेट करें

    लाभ यह है कि इसे कोड की कोई अतिरिक्त लाइन की आवश्यकता नहीं है। डाउनसाइड यह है कि यह आपको एक पूर्ण यूआरएल पर रीडायरेक्ट करता है।

    +0

    दोनों पर आईआईएस बाइंडिंग की आवश्यकता है (आईआईएस 8.5/2012 आर 2 पर)। और web.config – schmendrick

    +0

    के साथ कोई tinkering यह समस्या को हल करने के लिए एक स्मार्ट तरीका है। thx –

    +0

    क्या आप कृपया इस नकारात्मक पक्ष का उदाहरण दे सकते हैं? यह किस परिस्थिति में होगा और यह नकारात्मक बात क्यों है? यदि आप इसे अपने उत्तर में जोड़ सकते हैं, तो यह बहुत अच्छा होगा। आपका बहुत बहुत धन्यवाद! –

    0

    Global.asax

    protected void Application_BeginRequest() 
    { 
    if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) 
    Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); 
    } 
    
    +0

    मैं आसानी से यूआरआई में "लोकलहोस्ट" डालकर इस रीडायरेक्ट को आसानी से प्राप्त कर सकता हूं, उदा। क्वेरी स्ट्रिंग http://yourdomain.com?localhost=true मैं अनुरोध करता हूं कि Request.Url.Host संपत्ति की जांच करें –