加载所有来自HTTP到HTTPS的资源文件?

时间:2013-07-29 作者:夏期劇場

(我正在使用Wordpress HTTPS 要强制的插件Admin 运行模式HTTPS.
对于管理面板来说很好。)

但是,一旦我HTTPS 模式,每个头版都被破坏了,因为,它是说一些头版Asset Files are coming as normal HTTP (不带“S”),然后会被阻止加载到页面上。

导致页面看起来很凌乱。

所以我想再清楚一点,

当我呼叫站点时HTTPS / SSL 模式一些资产文件,如:

  • http://www.my-another-site.com/something.js
  • http://www.my-another-site.com/something.css
  • http://www.my-another-site.com/something.jpg
  • 。。。etc。。都坏了。(Because i\'m in https mode and those above files are coming as http)

    那么,如何让Wordpress强制加载这些文件呢
    (我不在乎它是否安全。只想让网站处于https://... 要正确渲染。)

3 个回复
SO网友:Rarst

如果资产正确排队,它们将使用其排队的确切URL。如果URL中的协议是硬编码的,则会导致您看到的不匹配问题。

为获得适当的协议支持,排队URL需要为:

使用WP API中的协议感知API函数创建(大多数(如果不是所有)生成URL的函数都是)使用协议相关格式,如//example.com/stylesheet.css如果链接来自第三方代码,则必须相应地取消注册并重新注册资源,或者(如果不使用队列,则为最坏情况)重写代码/让原始开发人员执行此操作。

SO网友:montrealist

下面是我为其中一个客户端设置SSL所做的工作。

1: 把这个放进wp-config.php 为了在管理端启用SSL。

define(\'FORCE_SSL_ADMIN\', true);
define(\'FORCE_SSL_LOGIN\', true);
2:确保在Settings -> General 两个字段中的URL前面都是https://

3: 放入此代码段(修改自this tutorial) 进入functions.php 以便将所有内部非HTTPS链接重定向到其HTTPS等效链接。

function wpse_ssl_template_redirect() {
    if ( !is_ssl() ) {
        if ( 0 === strpos($_SERVER[\'REQUEST_URI\'], \'http\') ) {
            wp_redirect(preg_replace(\'|^http://|\', \'https://\', $_SERVER[\'REQUEST_URI\']), 301 );
            exit();
        } else {
            wp_redirect(\'https://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'], 301 );
            exit();
        }
    }
}

add_action( \'template_redirect\', \'wpse_ssl_template_redirect\', 1 );

SO网友:Remzi Cavdar

我建议编辑。htaccess文件或创建一个。

包括默认WordPress代码的示例:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

结束

相关推荐

使用SSL的BloInfo()和Get_模板_目录_uri()?

我有一个Wordpress主题,我正试图放在一个只有SSL的网站上。该站点没有非SSL版本。Wordpress主题使用各种功能,如bloginfo(\'pingback_url\'), bloginfo(\'template_directory\'), get_template_directory_uri(), 等主题的所有典型功能。所有这些函数都生成http 链接,而不是https, 因此,它们都不会加载,因为该站点不存在非SSL版本。如何强制Wordpress使用https 为了一切?