在TYPO3中通过SSL提供静态资源

时间:2012-02-01 17:02:43

标签: php ssl https typo3

我有一个TYPO3网站,需要通过SSL提供主页(主页)。

我第一次处理这个问题就是安装HTTPS Enforcer扩展程序,它允许您指定TYPO3站点中应该强制为HTTPS的特定页面。在该级别,扩展按照广告的方式工作。但问题是,虽然其中一个页面的请求确实是通过SSL处理的,但页面内嵌的资源(如图像)通过SSL 传递。因此,您在浏览器中会收到警告(具体取决于浏览器,可以是从安静的信息消息到完整的尖叫警告页面),告诉您该页面完全安全, (可以理解)让人们感到害怕。

所以我的问题是 - 如何让TYPO3通过SSL提供完整页面,包括静态资源?有没有办法配置/扩展HTTPS Enforcer来做到这一点?在这种情况下,还有其他扩展更好吗?还是我完全没有运气?

2 个答案:

答案 0 :(得分:4)

HTTPs Enforcer做得很好。

如果只是一个页面,您可以创建条件来更改baseUrl

[PIDinRootline = 123]
config.baseURL = https://www.example.com/
[global]

如果它适用于整个子域(例如ssl.example.com),则您的情况如下:

[globalString = ENV:HTTP_HOST=ssl.example.com]
config.baseURL = https://ssl.example.com/
[global]

使用第二种方式,如果页面应加密,您可以选择每页。

陷阱可能是外部加载的资源(如Facebook API等)。他们可能不提供SSL加密服务。


编辑(来自@ cascaval的评论)这可能是首选解决方案:

[globalString = _SERVER|HTTPS=on]
config.baseURL = https://ssl.example.com/
[global]

编辑(来自@ konsolenfreddy的评论)

[globalString = ENV:TYPO3_SSL=1]
config.baseURL = https://ssl.example.com/
[global]

答案 1 :(得分:1)

我想它应该是:

[globalVar = IENV:TYPO3_SSL = 1]
config.baseURL = https://ssl.example.com/
[global]

注意“IENV”:这是TYPO3特有的。 “ENV”仅使用$ _ENV或$ _SERVER中的普通PHP变量,其中TYPO3_SSL不是有效密钥。

但这样做只有以下几点:在输出中设置一个标签,以便相对链接的内容即< img src =“uploads / pics / image.jpg”/> 将获得通过SSL获取。

如果您的站点中有绝对URL的资产链接(图像,CSS等),这将无济于事。在这种情况下,您可以尝试扩展“https”(https_enforcer和另一个扩展名的合并)或stfl_replace,以使某些正则表达式将“http://”链接替换为“https://”。