2013-07-25 4 views
5

के साथ एचटीटीपीएस पर HTTP को रीडायरेक्ट करना मुझे उबंटू सर्वर 12.04 पर अपाचे 2.2.22 का उपयोग करके HTTPS पर HTTP अनुरोधों के पुनर्निर्देशन को बल देने के लिए mod_rewrite का उपयोग करने में कोई समस्या है।अपाचे

<VirtualHost *:80> 
     RewriteEngine On 
     RewriteCond %{SERVER_PORT} !^443$ 
     RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
    </VirtualHost> 

HTTPS मेजबान एक ही निर्देशिका में डिफ़ॉल्ट-ssl में परिभाषित किया गया है: इस प्रकार

मेरे/etc/apache2/साइटों से उपलब्ध/डिफ़ॉल्ट फ़ाइल है।

सर्वर के स्थानीय आईपी पते पर जाकर, रीडायरेक्ट ठीक काम करता प्रतीत होता है। हालांकि, इसे एफक्यूडीएन के माध्यम से एक्सेस करना, यह नहीं है। एफक्यूडीएन का उपयोग करके, यह साइट पोर्ट 5443 पर उपलब्ध है, जिसे फ़ायरवॉल में सर्वर पर 443 पर मैप किया गया है, इसलिए शायद उस समस्या के साथ कुछ करने के लिए है। मैं सीधे पोर्ट 443 का उपयोग नहीं कर सकता, क्योंकि यह किसी अन्य सर्वर द्वारा इस आईपी पते पर उपयोग में है।

आगे स्पष्ट करने के लिए निम्न वैध लिंक कर रहे हैं:

https://website:5443 
    https://192.168.200.80:443 

रीडायरेक्ट यहाँ काम करता है:

http://192.168.200.80 

लेकिन निम्नलिखित एक 400 गलत अनुरोध देता है, और यह वह जगह है जहाँ रीडायरेक्ट की जरूरत है :

http://website:5443/ 

"आपके ब्राउज़र ने एक अनुरोध भेजा है कि यह सर्वर समझ में नहीं आया। कारण: आप एक एसएसएल-सक्षम सर्वर पोर्ट पर सादा HTTP बोल रहे हैं। कृपया इस यूआरएल तक पहुंचने के लिए एचटीटीपीएस योजना का उपयोग करें। "

+0

यह एक साधारण बात करने के लिए लंबा रास्ता तय की तरह लगता है, हो सकता है आप इसके लिए एक कारण है, हालांकि। किसी भी प्रकार में, आपको mod_proxy की जांच करनी चाहिए: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html इस सापेक्ष SO प्रश्न के साथ: http://stackoverflow.com/questions/1162375/apache-port -proxy। –

उत्तर

2

आपकी समस्या यहां प्रारंभिक HTTP अनुरोध है: यह काम नहीं करेगा क्योंकि सर्वर पोर्ट 443 पर अनुरोध प्राप्त नहीं कर पाएगा (प्रतिक्रिया के रूप में कोड से पता चलता है)।

कोई बंदरगाह पोर्ट 443

को पोर्ट 80, https को दिया जाता है, प्रोटोकॉल http चूक तो यह भी कारण है कि अपने स्थानीय रीडायरेक्ट काम करता है। मुझे यकीन है, यदि आप पृष्ठ का उपयोग है http://website/ (पोर्ट 80 के उचित बंदरगाह अग्रेषण के साथ) के माध्यम से, यह भी काम करेगा। यह भी ध्यान रखें कि आपके VirtualHost को केवल परिभाषित किया गया है पोर्ट 80 वैसे भी, इसलिए यह website:5443 (या website:443) पर भेजे गए अनुरोधों के लिए मान्य नहीं होगा।

सामान्य रूप से, आपको एक पोर्ट पर HTTP और HTTPS अनुरोधों को स्वीकार करने वाले सर्वर की आवश्यकता होगी। सुनिश्चित नहीं है कि कोई भी लोकप्रिय सर्वर वास्तव में ऐसा कुछ समर्थन करता है, क्योंकि (मुझे लगता है) यह अनिवार्य रूप से चश्मे का उल्लंघन करता है।

+0

तो, मूल रूप से, यह मेरे सेटअप में नहीं किया जा सकता है? – dutchgold92

+0

ऐसा नहीं है कि मुझे पता है। आपको शायद किसी भी तरह से एक कस्टम सर्वर की आवश्यकता होगी या कस्टम प्रॉक्सी रीडायरेक्टिंग अनुरोधों को उनकी वास्तविक सामग्री के आधार पर स्वीकार करना होगा। – Mario

+0

ठीक है, किसी भी मामले में यह वास्तव में इस स्थिति में इसके लायक नहीं है। चीयर्स। – dutchgold92

8

यह पूरी तरह से संभव है। निम्नलिखित सभी http को https url पर रीडायरेक्ट करता है।

<VirtualHost *:80> 
    ServerName mydomainname.com 
    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost> 

सुनिश्चित करें कि आप फिर से लिखने मॉड्यूल mod_rewrite लोड और इसे सक्षम बनाते हैं।

1

यदि आप अपनी साइट http: // anything.example.com से https: //anything.example.com पर रीडायरेक्ट करना चाहते हैं ... बस एक समर्पित होस्टिंग .conf फ़ाइल/etc/httpd/conf के रूप में बनाएं। d/समर्पित.conf और अन्य conf फ़ाइल virtual.conf के रूप में ... समर्पित.conf के लिए प्रविष्टियां निम्नानुसार हैं ....

यह समर्पित सर्वर होस्टिंग conf फ़ाइल को https पर रीडायरेक्ट करने के लिए समर्पित है ... th[][1]

<virtualhost *:80> 
servername host.example.com 
documentroot /var/www/html 
rewriteengine on 
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
sslcertificatefile /etc/pki/tls/certs/name.crt 
sslcertificatekeyfile /etc/pki/tls/private/name.key 
</virtualhost> 
<directory /var/www/html> 
allowoverride all 
require all granted 
</directory> 
+1

छवियों के रूप में कोड पोस्ट न करें। – Jakuje

+0

क्या यह सुरक्षा भेद्यताएं पेश करेगा ?? – Anthony

+0

मुझे यकीन है कि अपाचे खुद ही रीडायरेक्ट का उपयोग करने की सिफारिश करता है और अब पुनः लिखता नहीं है ?? – Anthony

0
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]