[Php] मैं उपयोगकर्ता को HTTP के बजाय HTTPS पर अपने पेज तक कैसे पहुंच सकता हूं?


Answers

आप इसे अपाचे पर निर्देश और mod_rewrite के साथ कर सकते हैं:

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

यदि आप चाहते हैं तो आप नियमित अभिव्यक्ति का उपयोग करके स्थान को अधिक समय तक बढ़ा सकते हैं

Question

मेरे पास सिर्फ एक पृष्ठ है, जिसे मैं एक HTTPS पेज (अपाचे पर PHP) के रूप में एक्सेस करने के लिए मजबूर करना चाहता हूं। मैं पूरी निर्देशिका को बिना HTTPS की आवश्यकता कैसे कर सकता हूं? या, यदि आप एक HTTP पृष्ठ से एक HTTPS पृष्ठ पर एक फ़ॉर्म सबमिट करते हैं, तो क्या इसे HTTP के स्थान पर HTTPS द्वारा भेज दिया जाता है?

यहां मेरा उदाहरण है:

http://www.example.com/some-page.php

मैं चाहता हूँ कि इसे केवल के माध्यम से पहुंचा जा सके:

https://www.example.com/some-page.php

ज़रूर, मैं इस पृष्ठ पर सभी लिंक को HTTPS संस्करण में इंगित कर सकता हूं, लेकिन यह कुछ बेवकूफ को HTTP पर उद्देश्य से उपयोग करने से रोकता नहीं है ...

मैंने सोचा था कि एक चीज PHP फ़ाइल के शीर्ष लेख में एक रीडायरेक्ट डाल रही है ताकि यह सुनिश्चित किया जा सके कि वे HTTPS संस्करण तक पहुंच रहे हैं:

if($_SERVER["SCRIPT_URI"] == "http://www.example.com/some-page.php"){
  header('Location: https://www.example.com/some-page.php');
}

लेकिन यह सही तरीके से नहीं हो सकता है, है ना?

बीटीडब्ल्यू, कृपया यूआरएल पर कोई ध्यान न दें। मुझे पता है कि अगर वह वास्तव में एक पृष्ठ था जहां शॉपिंग कार्ट थी, आदि, आप इसे एक अलग तरीके से करेंगे। किसी ऐसे साइट से एक पृष्ठ के रूप में सोचें जो एक आइटम को एक कीमत के लिए बेचता है, जहां आप अपने क्रेडिट कार्ड की जानकारी में एक बाहरी साइट पर एक भुगतान गेटवे के लिए प्रस्तुत किए जाने के लिए एक बार अपने कार्ड को चार्ज करने के उद्देश्य से प्रस्तुत करते हैं।




मैंने इस स्क्रिप्ट का उपयोग किया है और यह साइट के माध्यम से अच्छी तरह से काम करता है।

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    enter code hereheader('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $redirect);
    exit();
}



ठीक है .. अब इस पर कई चीजें हैं लेकिन कोई भी वास्तव में "सुरक्षित" प्रश्न को पूरा नहीं करता है। मेरे लिए यह असुरक्षित कुछ का उपयोग करने के लिए लाल है।

जब तक आप इसे चारा के रूप में प्रयोग नहीं करते हैं

$ _SERVER प्रचार किसी की इच्छा से बदला जा सकता है जो कि कैसे जानता है

इसके अलावा, सज़ाद तुषार खान और थिबिगज ने कहा है कि आप यह करने के लिए भीड़भाड़ का उपयोग कर सकते हैं और यहां इसमें कई सारे जवाब दिए गए हैं।

बस जोड़ दो:

रीवरइटइन्गइन ऑन
पुनर्लेखन% {SERVER_PORT} 80
पुनर्लेखन नियम ^ (। *) $ Https://domain.com/ $ 1 [आर, एल]

क्या आपके पास है .httaccess में है और यह है कि

फिर भी हम सुरक्षित नहीं हैं क्योंकि हम संभवत: इन 2 टूल के साथ हो सकते हैं।

बाकी सरल है अगर वहाँ गुम विशेषताओं अर्थात् ...

अगर (खाली ($ _ सर्वर ["HTTPS"])) {/ / कुछ बात फिशली है
}

अगर (strstr ($ _ सर्वर ['HTTP_HOST'], "mywebsite.com") === गलत) {// कुछ मछली है
}

यह भी कहते हैं कि आपने अपनी httaccess फ़ाइल अपडेट की है और आप जांचते हैं:

अगर ($ _ सर्वर ["HTTPS"]! == "चालू") {// कुछ गड़बड़ है
}

आप बहुत अधिक चर हैं यानी आप जांच सकते हैं ..

HOST_URI (यदि इस बारे में जांच करने के लिए स्थिर अंश हैं)

HTTP_USER_AGENT (एक ही सत्र अलग-अलग मान)

तो सभी इम कह रहा है कि एक संयोजन में निहित होने पर केवल एक या दूसरे के लिए व्यवस्थित नहीं होता है।

अधिक जानकारी प्राप्त करने के लिए डॉक्स-> http://httpd.apache.org/docs/2.0/misc/rewriteguide.html देखें।

यहां कुछ ढेर -> फोर्स SSL / https .htaccess और mod_rewrite का उपयोग करते हुए
तथा
वर्तमान पृष्ठ का संपूर्ण यूआरएल (PHP) प्राप्त करना
कुछ नाम करने के लिए




http://www.besthostratings.com/articles/force-ssl-htaccess.html

कभी-कभी आपको यह सुनिश्चित करने की आवश्यकता हो सकती है कि उपयोगकर्ता आपकी साइट को सिक्यूरेट कनेक्शन पर ब्राउज़ कर रहा है। हमेशा उपयोगकर्ता को कनेक्शन सुरक्षित करने के लिए रीडायरेक्ट करने के लिए एक आसान तरीका (https: //) निम्न पंक्तियों वाली एक .htaccess फ़ाइल से पूरा किया जा सकता है:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

कृपया ध्यान दें, .htaccess वेब साइट के मुख्य फ़ोल्डर में स्थित होना चाहिए।

यदि आप एक विशिष्ट फ़ोल्डर के लिए HTTPS को बल देना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]

.htaccess फ़ाइल को उस फ़ोल्डर में रखा जाना चाहिए जहां आपको HTTPS को मजबूर करने की आवश्यकता होती है।




IIS का प्रयोग करते हुए वेब पर इस लाइन को जोड़ने के लिए। Config में मदद मिलेगी:

<httpProtocol>
    <customHeaders>
        <add name="Strict-Transport-Security" value="max-age=31536000"/>
    </customHeaders>
</httpProtocol>
<rewrite>
    <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                 <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
         </rule>
    </rules>
</rewrite>

एक पूर्ण उदाहरण फ़ाइल

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Strict-Transport-Security" value="max-age=31536000"/>
             </customHeaders>
        </httpProtocol>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                      <match url="(.*)" />
                      <conditions>
                         <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                      </conditions>
                      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
                 </rule>
            </rules>
       </rewrite>
   </system.webServer>
</configuration>



यदि आप अपाचे या कुछ लाइटस्पीड का उपयोग करते हैं, जो .htaccess फ़ाइलों का समर्थन करता है, तो आप निम्न कार्य कर सकते हैं। यदि आपके पास पहले से कोई .htaccess फ़ाइल नहीं है, तो आपको अपनी रूट निर्देशिका में एक नया .htaccess फ़ाइल बनाना चाहिए (आमतौर पर जहां आपका index.php स्थित है)। अब इन्हें अपनी .htaccess में पहले रीराइट नियम के रूप में जोड़ें:

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

आपको अपने .htaccess में एक बार फिर से लिखना नियमों के लिए केवल "रीराइटइन्गइन ऑन" निर्देश की आवश्यकता है, इसलिए यदि आपके पास पहले से ही है, तो बस दूसरी और तीसरी पंक्ति की नकल करें

आशा है कि ये आपकी मदद करेगा।




मैंने अभी एक .htaccess फ़ाइल बनाई है और कहा:

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

सरल !




उसी पृष्ठ पर HTTP और HTTPS मिश्रण न करें यदि आपके पास एक फॉर्म पेज है जो HTTP के माध्यम से सेवा करता है, तो मैं डेटा सबमिट करने के बारे में परेशान होने जा रहा हूं - मुझे नहीं पता है कि क्या सबमिट दृश्य या उसके लिए शिकार किए बिना HTTPS या HTTP पर चला जाता है।

सबमिट लिंक के साथ ही HTTPS पर फॉर्म की सुविधा लाभ के लिए भारी बदलाव नहीं है।