http से https अपाचे पुनर्निर्देशन


157

अपाचे के साथ पर्यावरण सेंटोस

Http से https तक ऑटोमैटिक रिडायरेक्शन सेटअप करने की कोशिश की जा रही है

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

मैंने अपने httpd.conf में निम्नलिखित जोड़ने की कोशिश की है, लेकिन यह काम नहीं किया

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

कोई विचार?

जवाबों:


209

मैंने वास्तव में इस उदाहरण का पालन किया है और इसने मेरे लिए काम किया :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

फिर करो:

/etc/init.d/httpd restart


7
ध्यान दें कि यह तभी उपलब्ध है जब आपके पास VirtualHost फ़ाइल तक पहुँच हो। यह अनुशंसित विधि है।
foochow

4
Httpd.conf पर इसे बदलने के बाद, अपाचे वेब सर्वर को पुनरारंभ करें। ताकि यह आपके ब्राउज़र कैश को भी प्रतिबिंबित और साफ़ कर दे।
सुरियान सुरेश

2
मैं रिपोर्ट करना चाहूंगा कि यह विधि मेरे लिए उबंटू 12.4 के साथ काम नहीं करती थी, हालांकि प्रस्तावित रेवेरिट्जाइन उत्तर ने चाल चली।
डीनो

2
क्या आपको पुनः आरंभ करना है? एक पुनः लोड बहुत कम विनाशकारी है और नई कॉन्फ़िगरेशन फ़ाइल में लाएगा। /etc/init.d/httpd reload|| service httpd reload
बजे रेबेका डेसनविल

3
चूंकि उद्देश्य इसे ssl मोड पर पुनर्निर्देशित करना था, DocumentRoot /usr/local/apache2/htdocsअब लाइन की आवश्यकता नहीं है
हाबिल कैलेजो

130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

या

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html


3
यह स्वीकृत एक से बेहतर समाधान है, क्योंकि यह पाउंड या बिगआईपी जैसे SSL ऑफलोडर के पीछे होने पर भी काम करता है। वे ऑफलोडर अक्सर एक ही बंदरगाह पर सभी ट्रैफ़िक पास करेंगे, और स्वीकृत समाधान उस विशिष्ट मामले में काम नहीं करेगा
स्प्रिटू

1
@spiritoo ऐसा नहीं है। अपाचे डॉक्स विशेष रूप से कहते हैं कि यह उन स्थितियों में से एक है जहां आपको mod_rewrite का उपयोग नहीं करना चाहिए और इसके बजाय Redirect: httpd.apache.org/docs/2.4/rewrite/avoid.html का
ल्यूक माधवगढ़

4
@LukeMadhanga Apache docrecommands को प्रदर्शन के लिए रीडायरेक्ट का उपयोग करते हुए। लेकिन फिर भी, अधिक सामान्य के अर्थ में, रेवेरटेन्जाइन समाधान बेहतर है, क्योंकि यह उस स्थिति में भी काम करता है जब मैंने वर्णित (ऑफलोडिंग) किया था। मेरी टिप्पणी का लक्ष्य प्रत्येक उपयोगकर्ता को दो उत्तरों के बीच चयन करने की कुंजी प्रदान करना है। कुछ लोग जेनेरिक प्रक्रियाओं (बड़ी वाहिनी) चाहते हैं, अन्य लोग प्रदर्शन चाहते हैं ... यह एक स्वतंत्र विकल्प है।
स्पिरिटू

20
यह बहुत अच्छा है, हालांकि, यदि आप इसे और अधिक बनाना चाहते हैं, तो इस [R = 302, L, QSA] को जोड़ दें ताकि कोई भी पैरामीटर सुरक्षित पृष्ठ पर भी चला जाए। यह इस तरह दिखना चाहिए:% {REQUEST_URI} [R = 302, L, QSA]
श्वेतस्लाव Marinov

मैंने इन पंक्तियों का उपयोग किया और जब पृष्ठ लोड करने की कोशिश की जाती है, तो प्रतिक्रिया होती है "संसाधन लोड करने में विफल: शुद्ध :: ERR_CONNECTION_REFUSED"। मैं क्या गलत कर रहा हूं?
सेरकन

98

यहां खोजा apache redirect http to httpsऔर उतरा। यह वही है जो मैंने ubuntu पर किया था:

1) मॉड्यूल सक्षम करें

sudo a2enmod rewrite
sudo a2enmod ssl

2) अपनी साइट कॉन्फिग को एडिट करें

फ़ाइल संपादित करें

/etc/apache2/sites-available/000-default.conf

सामग्री होनी चाहिए:

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

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>

३) अपाचे २ को पुनः आरंभ करें

sudo service apache2 restart

Ubuntu 16.04 और Apache2 के साथ काम करें। धन्यवाद!
सिल्वेस्टर याओ

11

वास्तव में, आपका विषय https://serverfault.com/ पर है, लेकिन फिर भी आप इन .htaccess निर्देशों की जांच करने का प्रयास कर सकते हैं :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1

11

Mod_rewrite का उपयोग करना अनुशंसित तरीका नहीं है इसके बजाय वर्चुअल होस्ट और रीडायरेक्ट का उपयोग करें।

मामले में, यदि आप mod_rewrite का उपयोग करने के इच्छुक हैं:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same 
location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

संदर्भ: Httpd Wiki - RewriteHTTPToHTTPS

यदि आप 301 स्थायी पुनर्निर्देशन की तलाश कर रहे हैं, तो पुनर्निर्देशित ध्वज इस प्रकार होना चाहिए,

 R=301

इसलिए रेव्रीलेर जैसा होगा,

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

6

यदि आपके पास Apache2.4 चेक है 000-default.conf- निकालें DocumentRootऔर जोड़ें

Redirect permanent / https://[your-domain]/

5

सर्वर संस्करण: Apache / 2.4.29 (Ubuntu)

वेब पर लंबी खोज के बाद और अपाचे के आधिकारिक दस्तावेज में, मेरे लिए काम करने वाला एकमात्र समाधान /usr/share/doc/apache2/README.Debian.gz से आया

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

फ़ाइल में /etc/apache2/sites-available/000-default.conf जोड़ें

पुनर्निर्देशित "/" " https://sub.domain.com/ "

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

बस।


पुनश्च: यदि आप बिना निकाले मैनुअल पढ़ना चाहते हैं:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz

3

यह मेरे लिए काम किया:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]

3

यह कोड मेरे लिए काम करता है।

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]


2

कृपया अपाचे Virtualhosting कॉन्फ़िगरेशन में इसे आज़माएं और फिर Apache सेवा पुनः लोड करें

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

-1

मैं कुछ के लिए यह आवश्यक था क्योंकि httpमेरे सर्वर पर डिफ़ॉल्ट अपाचे मुख पृष्ठ से सभी ट्रैफ़िक को पुनर्निर्देशित करने के लिए मेरे सर्वर पर एक से अधिक सेवा की गई थी https

चूंकि मैं अभी भी काफी हरा हूं, जब यह अपाचे को कॉन्फ़िगर करने की बात आती है, मैं mod_rewriteसीधे उपयोग करने से बचना पसंद करता हूं और इसके बजाय कुछ इस तरह से सरल के लिए गया:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

मुझे यह पसंद है क्योंकि इसने मुझे अपाचे चर का उपयोग करने की अनुमति दी थी और इस तरह मुझे वास्तविक होस्ट नाम निर्दिष्ट करने की आवश्यकता नहीं थी क्योंकि यह एक संबंधित डोमेन नाम के बिना सिर्फ एक आईपी पता है।

संदर्भ: https://stackoverflow.com/a/40291044/2089675

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