आप HTTPS को HTTP पर कैसे रीडायरेक्ट करते हैं?

आप HTTPS को HTTP पर कैसे रीडायरेक्ट करते हैं? यही है, जो (प्रतीत होता है) के विपरीत हर कोई सिखाता है।

मेरे पास एचटीटीपीएस पर एक सर्वर है जिसके लिए मैंने एक एसएसएल प्रमाणीकरण और एक दर्पण का भुगतान किया जिसके लिए मैंने आपात स्थिति के लिए नहीं रखा है और इसके लिए प्रमाणन प्राप्त करने की योग्यता नहीं है।

मेरे क्लाइंट के डेस्कटॉप पर मेरे पास कुछ शॉर्टकट हैं जो http://production_server और https://production_server (दोनों कार्य) को इंगित करते हैं। हालांकि, मुझे पता है कि अगर मेरा उत्पादन सर्वर नीचे चला जाता है, तो DNS फॉरवर्डिंग में शामिल होता है और उन क्लाइंट्स जिनमें उनके शॉर्टकट पर "https" होता है, वे https://mirror_server (जो काम नहीं करता है) पर देख रहे होंगे ) और मेरी कंपनी के लिए असहजता की एक बड़ी वसा इंटरनेट एक्सप्लोरर 7 लाल स्क्रीन।

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

It's very easy to find Apache solutions for http->https redirection, but for the life of me I can't do the opposite.

विचार?

0
ro fr bn

9 उत्तर

ध्यान रखें कि रिवाइट इंजन केवल HTTP अनुरोध प्राप्त होने के बाद ही जाता है - जिसका मतलब है कि क्लाइंट को अनुरोध भेजने के लिए कनेक्शन सेट अप करने के लिए आपको अभी भी प्रमाणपत्र की आवश्यकता होगी!

हालांकि यदि बैकअप मशीन में एक ही होस्टनाम (जहां तक ​​ग्राहक संबंधित है) दिखाई देगा, तो कोई कारण नहीं होना चाहिए कि आप मुख्य उत्पादन मशीन के समान प्रमाणपत्र का उपयोग नहीं कर सकते हैं।

0
जोड़ा
यह सीमा कैसे दूर की जा सकती है? मुझे भी वही समस्या हो रही है। रीडायरेक्ट से पहले ब्राउजर से सर्टिफिकेट त्रुटि प्राप्त करना।
जोड़ा लेखक Sandeep Balagopal, स्रोत

वर्डप्रेस वेबसाइट पर मेरे लिए कोई भी जवाब काम नहीं करता है लेकिन कामों के बाद (यह अन्य उत्तरों के समान है लेकिन थोड़ा बदलाव है)

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

यह परीक्षण नहीं किया गया है, लेकिन मुझे लगता है कि यह mod_rewrite का उपयोग कर काम करना चाहिए

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
0
जोड़ा
हालांकि यह काम करता है, यह प्रति अपाचे में गलत दिखाई देता है ( httpd.apache.org/docs/ वर्तमान/पुनः लिखना/Avo.html ) ऐसा लगता है कि आप इसके बजाय मॉड उपनाम का उपयोग करना चाहते हैं।
जोड़ा लेखक Jackie, स्रोत
अगर मैं इस सुझाए गए समाधान को .htaccess में अपाचे के www के नीचे विशिष्ट फ़ोल्डर में रखा गया है और डिफ़ॉल्ट सभी को ओवरराइड करें सेट करें, तो यह काम करेगा?
जोड़ा लेखक Ciasto piekarz, स्रोत
मैं इसे कैसे काम करूं (इस कोड को काम करने के लिए मुझे इस कोड से अपने डोमेन में क्या बदलना है)?
जोड़ा लेखक Enve, स्रोत
मुझे लगता है कि आप क्वेरी स्ट्रिंग्स को भी पकड़ना चाहते हैं। मुझे यकीन नहीं है, लेकिन मुझे लगता है कि उपरोक्त स्निपेट क्वेरी स्ट्रिंग को https से http तक अग्रेषित नहीं करेगा।
जोड़ा लेखक Rustavore, स्रोत
@Gaia यहां अपाचे की सिफारिश के लिए रीडायरेक्ट संस्करण है रीडायरेक्ट "/" "http://domain_to_redirect_to.com/"
जोड़ा लेखक Poly Bug, स्रोत
मुझे इसकी ज़रूरत है लेकिन केवल "देव" के साथ मिलकर। मेरे सभी डोमेन के लिए मेजबान। दूसरे शब्दों में, https: //www.* के लिए मैं SSL रखूंगा और https: //dev.* के लिए मुझे http://जाना होगा dev। * क्योंकि मेरे पास SSL प्रमाणपत्र नहीं है और चेतावनी के बिना परीक्षण करना मेरे लिए बेहतर है। कैसे ?
जोड़ा लेखक Meloman, स्रोत
Enve: बस अपनी साइट के vhost_ssl.conf विन्यास (या साइट की जड़ पर .htaccess) में जोड़ें। कुछ भी बदलने की जरूरत नहीं है, यह गतिशील रूप से उसी मेजबान नाम और यूआरएल पथ का उपयोग करेगा।
जोड़ा लेखक Darren Felton, स्रोत
जैसा कि नीचे कीरॉन द्वारा इंगित किया गया है, यह मिरर सर्वर का कोई वैध प्रमाण पत्र नहीं है, तो यह काम नहीं करेगा। अमान्य प्रमाणपत्र के कारण भी आपको एक बड़ी लाल चेतावनी दिखाई देगी। एक बार जब आप https का उपयोग करना शुरू कर देते हैं, तो आप मूल रूप से इसके साथ अटक जाते हैं। अपने पूरे जीवन में इसके लिए भुगतान करने के लिए तैयार रहें। यदि आप भुगतान करना बंद कर देते हैं, तो जो लोग https लिंक को बुकमार्क करते हैं वे आने में सक्षम नहीं होंगे।
जोड़ा लेखक Stephen Cheng, स्रोत

यदि उपरोक्त में से कोई भी समाधान आपके लिए काम नहीं करता है (वे मेरे लिए नहीं थे) यहां मेरे सर्वर पर क्या काम किया गया है:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
0
जोड़ा
अक्सर बार, आप एल, (जिसका अर्थ है "अंतिम नियम") नहीं चाहते हैं। यदि आप वर्डप्रेस या किसी अन्य सीएमएस का उपयोग कर रहे हैं, तो एल ध्वज पृष्ठ अनुरोध को ठीक तरह से रूट करने से रोक सकता है। इसके बजाए उपयोग करें: रिवाइट्रूल ^ (। *) $ Http: //% {HTTP_HOST}/$ 1 [आर = 301]
जोड़ा लेखक Rustavore, स्रोत

Ejunker के उत्तर के आधार पर, यह समाधान मेरे लिए काम कर रहा है, न कि एक सर्वर पर बल्कि क्लाउड पर्यावरण पर

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

उन लोगों के लिए जो .conf फ़ाइल का उपयोग कर रहे हैं।


    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


0
जोड़ा

जहां तक ​​मुझे एक साधारण मेटा रीफ्रेश के बारे में पता है, त्रुटियों के बिना भी काम करता है:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
0
जोड़ा
मेरी इच्छा है कि मतदाताओं को वोटों के कारणों की व्याख्या करने वाली टिप्पणियां छोड़नी होंगी। निजी तौर पर, मैं इस जवाब को तब तक नहीं चुनूंगा जब तक कि डेवलपर के पास उस सर्वर तक पहुंच न हो, जिसके लिए आप विकास कर रहे थे लेकिन आपके पास पृष्ठ तक पहुंच थी। एक समस्या यह है कि आपको यह काम करने के लिए हर पृष्ठ पर हर पथ को हार्डकोड करना होगा। यदि आप मान सकते हैं कि जावास्क्रिप्ट आपके महत्वपूर्ण उपयोग मामलों के लिए सक्षम है, तो आप http में बदलने के लिए जावास्क्रिप्ट का उपयोग करना बेहतर कर देंगे। उपर्युक्त उत्तर बेहतर हैं क्योंकि सर्वर पर होने के बाद उन्हें जावास्क्रिप्ट की आवश्यकता नहीं होती है।
जोड़ा लेखक Rustavore, स्रोत
बस: क्योंकि htaccess उससे कहीं बेहतर विकल्प है। साथ ही, यदि आपके पास प्रमाणपत्र नहीं है तो यह https प्रोटोकॉल को http पर रीडायरेक्ट करने के लिए समस्या को ठीक नहीं करेगा।
जोड़ा लेखक miduga, स्रोत
कार्रवाई को सर्वर द्वारा संसाधित किया जाना चाहिए, न कि 'ए' दस्तावेज़ जो यह सेवा दे सकता है।
जोड़ा लेखक albal, स्रोत

जब आप कर सकते हैं mod_rewrite का उपयोग कर ovoid बेहतर है। आपके मामले में मैं इसके साथ रिवाइट को प्रतिस्थापित करूंगा:

    
            Redirect permanent/http://production_server/
    

The directive is only available in Apache 2.4+ as per this blog here

0
जोड़ा

जब मैंने क्लाउडफ्लेयर का इस्तेमाल किया, तो उपरोक्त सभी काम नहीं करते थे, यह मेरे लिए काम करता था:

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]
0
जोड़ा