एसएसएल को .htaccess में या मेरे PHP कोड में फोर्स करें, परिणामस्वरूप लूप त्रुटि - php, apache, zend-framework, mod-rewrite

मैं HTTPS के उपयोग को मजबूर करने का प्रयास कर रहा हूं, मैं हूं.htaccess फ़ाइल के साथ इसे पूरा करने के लिए उम्मीद है, लेकिन यह भी कोड का उपयोग करने का प्रयास किया है। मैं Zend फ्रेमवर्क का उपयोग कर रहा हूं, और में इस कोड का उपयोग करने की कोशिश की है Bootstrap.php HTTP सर्वर पर परस्पर विरोधी नियम या कुछ गलत सेटिंग से बचने के प्रयास में।

public function _initForceSSL() {
if (!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on") {
if(!headers_sent()) {
header("Status: 301 Moved Permanently");
header(sprintf(
"Location: https://%s%s",
$_SERVER["HTTP_HOST"],
$_SERVER["REQUEST_URI"]
));
exit();
}
}
}

यह वही परिणाम उत्पन्न करता है जैसे कि मुझे यह करना है ...

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://mydomain.tld/$1 [R,L]

मेरी .htaccess फ़ाइल में। मुझे अपने स्थानीय देव पर वही अनुप्रेषित लूप शिकायत मिलती है। सर्वर (जहां मुझे सभी सेटिंग्स तक पूर्ण पहुंच है, नियमित "ol LAMP स्टैक यह है)। इसके अलावा, Zend के PHPCloud (Zend सर्वर का उपयोग करके) पर समान परिणाम।

यहाँ मेरी पूरी .htacces फ़ाइल है, मैंने "विभिन्न स्थानों में नियमों का उपयोग करके कोशिश की है ...

    setEnv APPLICATION_ENV development

#setEnv APPLICATION_ENV production
#setEnv APPLICATION_ENV testing

RewriteEngine On

#tried it here

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
#tried here
RewriteBase /
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

#tried it here too...

मैं सिर्फ यह पता लगा सकता हूं कि मैं क्या गलत कर रहा हूं, मैंने "फिर से लिखने के लिए" कुछ अन्य "लोकप्रिय" विधि का भी प्रयास किया।

मेरी केवल आवश्यकता यह है कि पूरा आवेदन एक गैर सुरक्षित कनेक्शन (एसएसएल ओनली) पर उपलब्ध न हो।

उत्तर:

जवाब के लिए 3 № 1

यदि आपके पास vhost फ़ाइल तक पहुँच है, तो आप यह कर सकते हैं:

<VirtualHost *:80>
ServerName  example.com

RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>

<VirtualHost *:443>
ServerName  example.com
...
</VirtualHost>