Use https for img src

时间:2011-04-18 作者:Ryan

我的网站要求对所有img src HTML使用https。

这是我用来显示图像的WordPress函数:

<img src="\'.get_bloginfo("template_url").\'/images/thumb-default.gif" />
这将输出一个http img src-如何将其转换为https?

4 个回复
最合适的回答,由SO网友:EAMann 整理而成

WordPress检查的返回值is_ssl() 在使用创建URL之前get_bloginfo(). 如果函数返回true,则创建https URL。如果返回false,则创建http URL。

从WordPress源。。。

function is_ssl() {
    if ( isset($_SERVER[\'HTTPS\']) ) {
        if ( \'on\' == strtolower($_SERVER[\'HTTPS\']) )
            return true;
        if ( \'1\' == $_SERVER[\'HTTPS\'] )
            return true;
    } elseif ( isset($_SERVER[\'SERVER_PORT\']) && ( \'443\' == $_SERVER[\'SERVER_PORT\'] ) ) {
        return true;
    }
    return false;
}
所以。。。如果请求是通过https发出的,或者请求是通过端口443传入的,那么get_bloginfo() 将返回https:// URL。实际上,如果您仍然强制使用https,那么您应该强制将对端口80(http)的所有请求转移到端口443(https)。。。但这是服务器配置问题,而不是WordPress问题。

或者,您可以挂接到过滤器中,并将http替换为https。。。

只需使用:

function replace_http( $original ) {
    // use preg_replace() to replace http:// with https://
    $output = preg_replace( "^http:", "https:", $original );
    return $output;
}

add_filter( \'template_url\', \'replace_http\' );

SO网友:Rarst

您是否在通过请求页面时对此进行了检查httphttps 链接什么是is_ssl() 你回来了?

目前我还没有能够测试SSL的堆栈,但我非常确信,将链接放在一起的WP函数应该知道SSL并输出正确的版本。

SO网友:Sam Margulies

使用home_url() 函数将自动检测ssl并更改协议。

SO网友:René Olivo

为了补充EAMann提出的修复方案,我对版本3.5进行了一些更改:

add_filter( \'template_directory_uri\', function( $original ) {
    $output = preg_replace( "/^http:/i", "https:", $original );
    return $output;
});
我想指出的是,这个重定向功能可能非常有用,但我的服务器将SSL重定向到另一个端口,而WP没有检测到,所以对我来说这是一个麻烦。

结束

相关推荐

在现代电子商务环境中,HTTPS的正确使用是什么?

传统上,https仅在绝对必要时使用,以保护个人和重要信息。结账和账户注册是最常见的。缺乏广泛实现的主要原因是计算开销降低了性能。随着计算开销不再是一个问题(如果你不这么认为,请研究你自己并测试,测试,测试),在今天的环境中什么是正确的用途。由于我一直在我的网站上工作,我开始得出结论,在整个网站上使用它绝对没有坏处,原因总结如下。1) 良好的EV证书可增强客户信心(绿色地址栏从来都不是坏事)2) 搜索引擎仍然可以找到您的产品(无论如何都是通过feed提交的)3) 性能不再是问题4) 如果你为证书付费,你也