访问https页面后,所有后续页面都将通过https提供

时间:2013-09-04 23:18:58

标签: .htaccess ssl https

我不知道这是我刚刚安装的购物车系统的问题,还是我做错了(或者甚至是真正的问题) - 但现在发生了什么:

我的网站上有一些网页是通过https(例如购物车结帐)提供的。我有其他页面是纯http(例如我的phpBB讨论论坛)。

发生的事情是,如果我访问安全页面,然后点击指向非安全页面的链接,它仍然会在浏览器地址栏中显示为“https://www.foo.com/unsecure_stuff” - 带挂锁和绿色安全指标等。

如果我从未访问过安全页面,那么网站的其余部分就会正常运行。

这不是一个大问题,但像某些像“喜欢”按钮的东西不会因某种原因而显示。我也想知道根本原因是什么,以及如何修复它。

商店目录有自己的.htaccess,那里有这个部分 - 我不明白,但也许这是继续重定向到https的原因?

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteBase /store

...谢谢

2 个答案:

答案 0 :(得分:1)

您的回答是正确的,如果您使用链接的相对路径,则HTTPS://将保持不变,解决方案是按照您的说法执行,并使用完整的URL路径。

但是,据我所知,如果您有大量链接并且不想通过并更改它们,那么让完整站点运行SSL并不是一个问题。也许是一个非常轻微的性能问题,但很可能没有你会注意到的。有关详情,请参阅:HTTP vs HTTPS performance

此外,您应该使用iframe FB like按钮,然后将网址指向//而不是http://或https://,请参阅:Facebook 'Like' button breaks https/SSL

答案 1 :(得分:0)

好吧我觉得我找到了原因。我访问的链接是相对的,所以“/ forum”就是这样。一旦https出现在浏览器中,似乎访问相对地址就会将根保留为https://并附加相对路径。

我相信这里的修复方法是使用链接的完整路径而不是相对路径。