2014-08-29 53 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

相關問題