如何在我网站的特定页面上从http请求重写为https?

时间:2011-05-12 11:29:16

标签: php codeigniter

嘿,人们。我看到这个主题在SO上一遍又一遍地重复,但我尝试了几个解决方案,但这些解决方案都没有为我工作。基本上 - 我知道如何更改我网站上的特定页面,以便它们处于https模式。但是,我不知道如何重写代码中的http请求。例如,如果我的页面,例如payment.php,包含加载外部ccs文件的链接 - > http://example.com/somecss.css然后谷歌浏览器会将其视为危险链接,并在网站网址旁边显示交叉红色挂锁。现在,我已经通过将代码中的所有http请求更改为https来手动测试它,并且挂锁神奇地变为绿色所以我想我需要某种mod重写规则来重写那些特定页面上的所有链接以便它们能够包含https。我希望我解释得很好。谁能帮我?我正在使用codeigniter。

2 个答案:

答案 0 :(得分:3)

要重写代码中的http请求,必须在那里使用协议相对路径。

<link rel="stylesheet" href="//www.domain.com/style.css"> 
<script src="//www.domain.com/script.js"></script> 

它将自动使用父页面的协议

答案 1 :(得分:2)

您必须确保用户通过安全连接浏览您的网站。您可以使用包含以下行的.htaccess文件将用户重定向到安全连接(https://):

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

请注意,.htaccess应位于网站主文件夹中。

如果您希望为特定文件夹强制使用HTTPS,则可以使用:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]

.htaccess文件应放在您需要强制HTTPS的文件夹中。