Я пытаюсь принудительно использовать HTTPS, надеюсь, это будет сделано с помощью файла .htaccess, но я также пытался использовать код. Я использую Zend Framework и пытался использовать этот код в 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. Я получаю ту же жалобу на петлю перенаправления на локальном устройстве сервер (где у меня есть полный доступ ко всем настройкам, обычный стек 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...
Кажется, я просто не могу понять, что я делаю неправильно, я пытался также переписать несколько других «популярных» методов. Кроме того, кстати, я использую свое фактическое доменное имя в RewriteRule.
Мое единственное требование - чтобы НЕ было доступно все приложение через незащищенное соединение (только SSL).