2014-08-29 76 views
0

我试图让HTTPS按照我的意愿工作,但没有运气。 我喜欢做的是,我希望网站通过http和https在特定的网址上。具体的网址是:reg.php & glomtpass.php。仅在特定页面上使用HTTPS - Htaccess,Apache,OpenSSL

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

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

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

任何帮助表示赞赏!

+0

不确定,但看看这里的突出显示,您的重写规则//是否需要转义? – CarCzar 2014-08-29 18:49:34

+0

你有在所有页面上需要的函数文件吗? (如果是这样,我有一个很好的解决方案,你不涉及重写) – Mic1780 2014-08-29 18:54:39

+0

@ Mic1780我现在没有在所有页面上的功能文件,但我可以开始使用一个 – Hampeee 2014-08-29 18:56:34

回答

-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; 
    } 
} 
?> 

这将完成是在$scriptsWithSSL数组,如果它不与HTTPS请求被移动到HTTPS发现里面的任何脚本。否则,它将成为一个普通页面,如果未通过HTTP请求,它将从HTTPS移动到HTTP。

+0

我真的很感谢你的帮助,但最后一个也没有工作。它适用于IE 11.0.9,但不适用于谷歌浏览器或Opera – Hampeee 2014-08-29 19:55:59

+0

你可以给我一个问题页面的链接吗? – Mic1780 2014-08-29 19:57:07

+0

哦,你有这些重写规则吗?这可能会导致无限循环。 – Mic1780 2014-08-29 20:00:17

相关问题