仅在特定页面上使用HTTPS - Htaccess,Apache,OpenSSL

时间:2014-08-29 18:43:58

标签: php apache .htaccess ssl https

我正在努力让HTTPS按照我的意愿工作,但没有运气。 我喜欢做的是我希望网站覆盖http,并在特定网址上进行https。具体网址是:reg.php& glomtpass.php。

但是当我尝试代码时,它会说:“这个网页有一个重定向循环”。经过一系列的尝试后,它仍然存在错误。

HTTP - >我现在在.htacess中使用的HTTPS代码:

RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/(reg|glomtpass)\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

感谢任何帮助!

1 个答案:

答案 0 :(得分:-1)

如果将函数文件添加到页面顶部并不是太麻烦,那么这就是我在php中检查进出HTTPS的方式。要使用它,只需要将其放在所有脚本中的文件。

功能文件

<?php

$scriptsWithSSL = array('reg.php','glomtpass.php');
if (in_array(end(explode('/', $_SERVER['PHP_SELF'])), $scriptsWithSSL) === true) {
    //we are on a page we want to be HTTPS. will become HTTPS if requested with HTTP
    if ($_SERVER['HTTPS'] == '' || $_SERVER['HTTPS'] == 'off') {
        header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']);
        exit;
    }
} else {
    //page should not be HTTPS and will move to HTTP if requested with HTTPS
    if (strtolower($_SERVER['HTTPS']) == 'on') {
        header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']);
        exit;
    }
}
?>

如果没有使用HTTPS请求,那么在$scriptsWithSSL数组中找到的任何脚本都将被移动到HTTPS。否则它是一个普通页面,如果没有HTTP请求,它将从HTTPS移动到HTTP。