पहले HTTPS को लागू करने के लिए, आपको सही वातावरण चर की जाँच करनी चाहिए %{HTTPS} off
, लेकिन ऊपर वाला आपका नियम तब www.
से लागू होता है जब से आपके पास लागू करने के लिए दूसरा नियम है www.
, पहले नियम में इसका उपयोग न करें।
RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
आसन्न के बारे में
जब प्रॉक्सिंग के कुछ रूपों के पीछे, जिसमें क्लाइंट HTTPS के माध्यम से एक प्रॉक्सी, लोड बैलेंसर, पैसेंजर एप्लिकेशन आदि से कनेक्ट %{HTTPS}
हो रहा है , तो चर कभी नहीं हो सकता है on
और एक फिर से लिखना पाश का कारण बन सकता है। ऐसा इसलिए है क्योंकि आपका एप्लिकेशन वास्तव में सादे HTTP ट्रैफ़िक प्राप्त कर रहा है, भले ही क्लाइंट और प्रॉक्सी / लोड बैलेंसर HTTPS का उपयोग कर रहे हों। इन मामलों में, वैरिएबल के X-Forwarded-Proto
बजाय हेडर की जांच करें %{HTTPS}
। यह उत्तर उचित प्रक्रिया को दर्शाता है
RewriteCond %{HTTPS} =off