سؤال

كيف يمكنك إعادة توجيه HTTPS HTTP?.هذا هو عكس ما (على ما يبدو) الجميع يعلم.

لدي خادم HTTPS والتي دفعت SSL شهادة المرآة التي لم والحفاظ حول فقط لحالات الطوارئ حتى لا تستحق الحصول على شهادة.

على موكلي سطح المكتب لدي بعض الاختصارات التي تشير إلى http://production_server و https://production_server (كل العمل).ولكن أنا أعلم أنه إذا خادم الإنتاج يذهب إلى أسفل ، ثم DNS إعادة توجيه الركلات في هؤلاء العملاء والتي "https" على اختصار سيحدق https://mirror_server (التي لا تعمل) ومجموعة كبيرة من الدهون Internet Explorer 7 الحمراء شاشة uneasyness لشركتي.

للأسف لا يمكنني التبديل هذا على مستوى العملاء.هؤلاء المستخدمين جدا الكمبيوتر الأميين:و من المرجح جدا أن يفزع من رؤية HTTPS "انعدام الأمن" أخطاء (وخاصة طريقة فايرفوكس 3 و Internet Explorer 7 على التعامل معها في الوقت الحاضر:وقف كامل نوعا ما والحمد لله, ولكن لا مساعدتي هنا لول).

انها من السهل جدا العثور على أباتشي حلول بالنسبة http->إعادة توجيه https, ولكن بالنسبة لي أنا لا يمكن أن تفعل العكس.

أفكار ؟

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

المحلول

هذا لم يتم اختباره ولكن أعتقد أن هذا يجب أن تعمل باستخدام mod_rewrite

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

نصائح أخرى

نضع في اعتبارنا أن إعادة كتابة المحرك فقط في ركلات مرة طلب HTTP وقد وردت - مما يعني أنك سوف لا تزال بحاجة إلى شهادة من أجل العميل لإعداد اتصال لإرسال الطلب أكثر!

ومع ذلك إذا كان النسخ الاحتياطي الجهاز سوف تظهر لديهم نفس اسم المضيف (بقدر العميل المعنية) ، ثم يجب أن يكون هناك سبب لا يمكنك استخدام نفس الشهادة الرئيسي في إنتاج آلة.

على أساس ejunker الجواب, هذا هو الحل ، على خادم واحد ولكن على سحابة بيئة

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

لتلك التي تستخدم .conf الملف.

<VirtualHost *:443>
    ServerName domain.com
    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/domain.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.key
    SSLCACertificateFile /etc/apache2/ssl/domain.crt

</VirtualHost>

إذا كان أي من الحلول المذكورة أعلاه العمل بالنسبة لك (لم بالنسبة لي) هنا هو ما يعمل على الخادم:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

كل ما سبق لا تعمل عندما تستخدم cloudflare, هذا واحد عملت بالنسبة لي:

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

و هذا بالتأكيد يعمل بدون وكلاء في الطريق:

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

فمن الأفضل تجنب استخدام mod_rewrite عندما يمكنك.

في هذه الحالة أود أن تحل محل كتابة هذا:

    <If "%{HTTPS} == 'on'" >
            Redirect permanent / http://production_server/
    </If>

على <If> التوجيه هو متاح فقط في Apache 2.4+ كما في هذا بلوق هنا.

لا شيء من الجواب يعمل بالنسبة لي على موقع وورد لكن الأعمال التالية ( انها مماثلة إلى إجابات أخرى ولكن لديها القليل من التغيير)

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

هذا يعمل بالنسبة لي.

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
    Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    # ... 
</VirtualHost>

تأكد من الاستماع إلى كل المنافذ 80 و 443.

بقدر ما أنا على علم بسيط ميتا التحديث يعمل أيضا دون أن تسبب أخطاء:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top