2011-05-12 83 views
6

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

+0

检查$ _ SERVER [“HTTPS”]当你正在构建的URL的本地资源。 – mikeds 2011-05-12 15:06:33

回答

3

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

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

它会自动使用父页面协议

+1

是的,谢谢! – Pavel 2011-05-12 16:00:53

2

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

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的文件夹中。

+0

是的,我使用这个,它工作正常,但它不会重写代码内的http请求。 – Pavel 2011-05-12 11:35:28

+6

哦!你的意思是CSS和JavaScript? – 2011-05-12 13:30:48

+0

是的。这可能吗? – Pavel 2011-05-12 13:38:08

相关问题