я хочу открыть страницу входа в мой сайт только с https
, а не на сайте comeplete. после авторизации (успешно) сайт снова запустится на http
.
В настоящее время моя главная страница входа - test_index.php
, где я включил test_header.php
мой основной код на test_header.php
-
if($_SERVER['SERVER_PORT'] != 443) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit();
}
но это делает полный веб-сайт в https
я также прочитал здесь , что это возможно через .htaccess
, поэтому я удалил приведенный выше фрагмент кода из test_header.php
и добавил следующие строки в файл .htaccess
и
<IfModule mod_rewrite.c>
RewriteEngine on
# 301 redirect to domain to 'www.'
RewriteCond %{HTTP_HOST} ^testweb.com$ [NC]
RewriteRule ^(.*)$ http://www.testweb.com/$1 [R=301,L]
</IfModule>
<FilesMatch test_index.php>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</FilesMatch>
Примечание: testweb.com - это воображаемое имя, а не реальный веб-сайт
но сайт все еще работает на https, пожалуйста, скажите мне, где я делаю ошибку ??
Редактировать
@ webbiedave, пожалуйста, проверьте мой обновленный код , это правильно ??
if ($_SERVER['REQUEST_URI'] == '/test_index.php') { // only check https on login
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit();
} else {
die("Sorry,Your website is not secure");
}
} elseif (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
// header("HTTP/1.1 301 Moved Permanently");
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit();
}
Спасибо