我目前遇到以下问题
Mixed Content: The page at 'https://www.example.com/' was loaded over HTTPS, but requested an insecure stylesheet
这是一个httpd
安装在 Centos 服务器上的 Wordpress 网站。
我在`http.conf 中有以下虚拟主机设置:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot /var/www/html/example
ServerName www.example.com
ServerAlias example.com
SSLEngine on
SSLCACertificateFile /etc/httpd/conf/ssl.crt/intermediate.crt
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
Redirect / https://www.example.com/
</VirtualHost>
在我的httpd.conf
我已更改AllowOverride
为全部,所以它看起来像这样:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
我可以确认它htaccess
正在工作,因为我正在使用 iTheme 安全插件,并且它按预期工作,如果我在其中键入一些垃圾,htacces
我会按预期收到服务器错误配置错误。
我已将仪表板中的两个 Wordpress URL 都更改为使用https
而不是http
.
完成所有这些后,我就可以通过 HTTP 访问该站点,被重定向到该站点的 HTTPS 版本并查看该站点。但是,在控制台中,我收到有关混合内容的错误,并且挂锁防护罩显示为黄色或红色交叉,而不是所需的绿色。
有一些文件存在问题,我知道例如我可以手动更改 URL 以使用https
而不是http
. 据我了解,我可以使用将 URL 更改为以下内容,这将简单地将链接调整为当前使用的协议:
<img src="//www.example.com/image.jpg" />
我还看到,如果资源不可用,https
我可以简单地执行以下操作:
https://example.com/imageserver?url=http://otherdomain.com/someimage.jpg&hash=abcdeafad
然而,我正在尝试找到一种方法来一次性修复所有这些问题htaccess
(我确信我以前做过,但我的片段对我不起作用)。
我使用了两个主要片段来试图强制一切结束https
,第一个是:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
#These Lines to force HTTPS
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
第二个来自戴夫沃尔什:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
但是,似乎都没有解决我的问题。作为预防措施,我httpd
在每次更改甚至htaccess
不需要重新启动的更改后都重新启动了服务,但是情况保持不变。谁能指出我正确的方向?