سؤال

هل هناك طريقة نظيفة لإعادة توجيه جميع المحاولات للانتقال إلى إصدار HTTP:// من الموقع إلى ما يعادله من HTTPS://؟

هل كانت مفيدة؟

المحلول

أعتقد أن أنظف طريقة هي كما هو موضح هنا على موقع 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>

نصائح أخرى

الحل الأكثر سهولة ونظيفة الذي وجدته هو

  1. في إعدادات SSL -> تتطلب SSL

  2. في صفحات الخطأ -> خطأ 403.4 -> إعادة التوجيه إلى موقع HTTPS

  3. في صفحات الخطأ -> تحرير إعدادات الميزات...-> تعيين الأخطاء التفصيلية للطلبات المحلية وصفحات الأخطاء المخصصة للطلبات البعيدة

الفائدة هي أنه لا يتطلب أي أسطر إضافية من التعليمات البرمجية.الجانب السلبي هو أنه يعيد توجيهك إلى عنوان url مطلق.

الطريقة النظيفة تغير فقط نظام URL من http -> https وتترك كل شيء آخر متساويًا.يجب أن يكون من جانب الخادم حتى لا تكون هناك مشكلات في المتصفح.

JPpinto.com لديه تعليمات خطوه بخطوه حول كيفية القيام بذلك، باستثناء أنهم يستخدمون جافا سكريبت (HttpRedirect.htm) بدلاً من إعادة التوجيه من جانب الخادم.لسبب ما، لم أتمكن من تشغيل IE لجافا سكريبت إذا قمت بتمكين "إظهار رسائل خطأ HTTP المألوفة"، والذي يتم تشغيله افتراضيًا.هناك شيء آخر يتعلق بالبرنامج النصي وهو أن إعادة التوجيه إلى المسار لم تنجح حتى في FF أو Chrome.يقوم البرنامج النصي دائمًا بإعادة التوجيه إلى الجذر.(ربما فاتني شيء ما، لأنه يجب إعادة التوجيه إلى المسار.)

لهذه الأسباب استخدمت صفحة ASP لإعادة التوجيه.الجانب السلبي بالطبع هو أن هذا يتطلب تمكين ASP الكلاسيكي على الخادم.

يحتوي OpsanBlog على البرنامج النصي والتعليمات ASP التي تعمل بشكل جيد مع IIS6.

لقد واجهت بعض المشكلات في استخدام هذه الطريقة مع IIS7.تواجه مشكلات واجهة المستخدم في الغالب، نظرًا لأن IIS7 يجعل من السهل جدًا تفويت شيء ما.

  • أولاً ، تحتاج إلى تثبيت ASP كميزة دور خادم الويب.
  • ثانياً ، لا يعمل استخدام دليل افتراضي كما هو متوقع في IIS7 ولم أحاول تصحيح هذا.بدلاً من ذلك ، وضعت الملف في المجلد الجذري للموقع واستخدمت عنوان url '/sslredirect.asp "في صفحة الخطأ 403.4 للإشارة إليه.
  • أخيرًا، الجزء الأكثر صعوبة، أنت يجب عدم فرض SSL لـ SSLRedirect.asp.وإلا فسوف تحصل على خطأ 403.4.للقيام بذلك، اختر الملف في IIS7 "عرض المحتوى"، وقم بالتبديل إلى "عرض الميزات" بحيث يمكنك تحرير إعدادات SSL للملف الفردي وتعطيل مربع الاختيار "يتطلب SSL".

يجب أن يعرض مدير IIS اسم الملف في الرأس.

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

أستخدم asp الكلاسيكي (الإنترانت) وعلى الصفحات التي تتطلب تسجيل الدخول، يقوم ملف تضمين تسجيل الدخول بإعادة التوجيه:

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.لذا فهي في الواقع إعادة توجيه نظيفة إلى صفحتك الآمنة.

أعتقد أن كلمة "بشكل نظيف" تعني مثل إعادة التوجيه 300.التكوين للعديد من الخوادم واللغات هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top