В настоящее время у меня есть проблемы со следующим
Mixed Content: The page at 'https://www.example.com/' was loaded over HTTPS, but requested an insecure stylesheet
Это веб-сайт Wordpress на сервере Centos с установленным httpd
.
У меня есть следующая настройка виртуального хоста в `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
на all, так что это выглядит так:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Я могу подтвердить, что htaccess
работает, поскольку я использую плагин безопасности iTheme, и он работает, как и ожидалось, также, если я ввожу какой-то мусор в htacces
, я получаю ошибку неправильной конфигурации сервера, как и ожидалось.
Я изменил оба URL-адреса Wordpress на панели инструментов, чтобы использовать 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
изменения, которые не требуют перезапуска, однако ситуация остается прежней. Может кто-то указать мне верное направление?
RewriteRule ^/(.*)
наRewriteRule ^(.*)
, если это есть в вашем файле htaccess. - person hjpotter92   schedule 18.09.2015#These Lines to force HTTPS RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
К сожалению, это все равно не будет хорошо работать. - person The Humble Rat   schedule 18.09.2015