IIS7: HTTP-> HTTPS सफाई से


146

क्या HTTP: // के किसी संस्करण का अपने HTTPS: // समतुल्य में जाने के सभी प्रयासों को पुनर्निर्देशित करने का एक साफ तरीका है?


जेम्स कोवाक
cpuguru

यदि आप IIS 7 पर हैं और R2 पर यहां एक गाइड है जो काम करता है और सबसे "साफ"
उज्जवल पार्कर

जवाबों:


177

मुझे लगता है कि IIS-aid.com पर सबसे साफ तरीका यहां बताया गया है । यह केवल web.config है और इसलिए यदि आप सर्वर बदलते हैं तो आपको 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="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

9
इसने मेरे लिए इस अपवाद के साथ काम किया कि मुझे https: // {HTTP_HOST} {REQUEST_URI}
एंड्रयू एस

6
यह भी मेरे लिए काम किया। मुझे उस एप्लिकेशन को जोड़ना था जिसे मैं नीचे चला रहा था ... लोकलहोस्ट / ऐप 1 => http: // {HTTP_HOST} / app1 / {R: 1}
RealSollyM

15
किसी के लिए जो पहले से ही फिर से लिखना खंड नहीं है, नियमों को वेब के निम्नलिखित अनुभागों में रखें ।config: <system.webServer> <rewrite> <नियम> ... </ नियम> </ rewrite> </ system .webServer>
raider33

16
सुनिश्चित करें कि Microsoft URL रिवाइराइट मॉड्यूल IIS सर्वर पर स्थापित है
ईमान

7
SEO कारणों से आपको redirectType = "स्थायी" का उपयोग करना चाहिए। समीक्षा का समर्थन
http://www.webmasters/answer/…

14

सबसे आसान और साफ समाधान मुझे मिला

  1. एसएसएल सेटिंग्स में -> एसएसएल की आवश्यकता होती है

  2. त्रुटि पृष्ठों में -> 403.4 त्रुटि पर -> HTTPS साइट पर पुनर्निर्देशित

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

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


1
पूरी तरह से काम करता है (IIS 8.5 / 2012 R2 पर)। और
schmendrick

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

2
@MarcosDimitrio Im अनिश्चित क्योंकि यह बहुत पहले था। लेकिन मेरा मानना ​​है कि जब मेरा मतलब था कि यह आपको एक पूर्ण यूआरएल पर पुनर्निर्देशित करता है तो मेरा मतलब "बेस यूआरएल" है। उदाहरण के लिए "http": //mywebsite.com/hellokitty को "https" पर पुनः निर्देशित किया जाएगा: //mywebsite.com इस प्रकार कुछ पथ सूचनाओं को खोने के कारण, यह अतिरिक्त पथ जानकारी के साथ हर मौजूदा लिंक को तोड़ देगा।
21

5

एक साफ तरीका केवल http -> https से केवल URL योजना को बदलता है और बाकी सभी चीजों को बराबर करता है। यह सर्वर-साइड होना चाहिए ताकि कोई ब्राउज़र समस्याएँ न हों।

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

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

OpsanBlog में ASP लिपि है और निर्देश जो IIS6 के साथ अच्छी तरह से काम करते हैं।

मैं IIS7 के साथ इस पद्धति का उपयोग करके कुछ समस्याएँ है। IIS7 के बाद से उपयोगकर्ता इंटरफ़ेस समस्याएँ अधिकांशतः आसान हो जाती हैं।

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

IIS मैनेजर को हेडर में फाइल का नाम दिखाना चाहिए।


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

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:"));
}

1
मैं आसानी से URI में कहीं भी "लोकलहोस्ट" लगाकर इस रीडायरेक्ट को प्राप्त कर सकता हूं, जैसे कि क्वेरी स्ट्रिंग yourdomain.com?localhost=true मैं इसके बजाय Request.Url.Host प्रॉपर्टी की जाँच करने का सुझाव
दूंगा

0

मैं क्लासिक एस्प (इंट्रानेट) का उपयोग करता हूं और उन पृष्ठों पर जिन्हें लॉग इन करने के लिए लॉगऑन की आवश्यकता होती है, फ़ाइल में रीडायरेक्ट शामिल है:

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

इस पाठ्यक्रम में GET या POST डेटा शामिल नहीं है। इसलिए प्रभाव में यह आपके सुरक्षित पृष्ठ पर एक साफ पुनर्निर्देशित है।


-4

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

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