Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php HTTPS仅在特定页面上-Htaccess、Apache、OpenSSL_Php_Apache_.htaccess_Ssl_Https - Fatal编程技术网

Php HTTPS仅在特定页面上-Htaccess、Apache、OpenSSL

Php HTTPS仅在特定页面上-Htaccess、Apache、OpenSSL,php,apache,.htaccess,ssl,https,Php,Apache,.htaccess,Ssl,Https,我正试图让HTTPS按我所希望的方式工作,但运气不好。 我喜欢做的是,我希望网站通过http,在特定的url上使用https。具体的url是:reg.php&glomtpass.php 但是当我尝试代码时,它说:这个网页有一个重定向循环。经过一系列的尝试,它仍然有那个错误 我现在在.htacess中使用的HTTP->HTTPS代码: RewriteCond %{HTTPS} on RewriteCond %{SCRIPT_FILENAME} !\/(reg|glomtpass)\.php [NC

我正试图让HTTPS按我所希望的方式工作,但运气不好。 我喜欢做的是,我希望网站通过http,在特定的url上使用https。具体的url是:reg.php&glomtpass.php

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

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

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

感谢您的帮助

如果在页面顶部添加函数文件不太麻烦的话,那么这就是我在php中检查HTTPS移入和移出的方式。要使用它,只需在所有脚本中添加该文件即可

函数文件


如果未使用HTTPS请求,则可以将$scriptsWithSSL数组中的任何脚本移动到HTTPS。否则,这是一个普通页面,如果不是通过HTTP请求,它将从HTTPS移动到HTTP。

不确定,但查看此处的突出显示,是否需要转义重写规则中的//?是否在所有页面上都有所需的函数文件?如果是这样的话,我有一个很好的解决方案,不涉及重写。如果你有SSL,为什么不在所有页面上使用它呢?@Hampeee修复脚本,然后。@Hampeee:因为有些脚本在通过SSL发送和接收信息时有问题。这就是为什么我只希望一些页面被强制使用SSL——这会使您和您的用户受到SSL的影响。坏主意。我真的很感谢你的帮助,但最后一个也没用。它可以在IE 11.0.9上运行,但不能在Google Chrome或OperaCan上运行。你能给我一个问题页面的链接吗?哦,你有重写规则吗?这可能是导致无限循环的原因。当从HTTP切换到HTTPS或从HTTP切换到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;
    }
}
?>