2015-05-25 2 views
21

У меня есть веб-сайт, работающий над ним. когда я открываю любую страницу с протоколом http: //, каждая вещь загружается правильно, но когда я пытаюсь загрузить страницу с протоколом https, страница загружается, но без css и javascript-файла.
На консоли отображаются следующие ошибки.Смешанная страница содержания: запросила небезопасную ошибку стилей

Mixed Содержание: Страница в 'https://www.example.com/index.php?main_page=login' был загружен над HTTPS, но просил небезопасную таблицу стилей 'http://www.example.com/site_map.html'. Этот запрос был заблокирован ; содержимое должно быть передано через HTTPS.

Я понял, что проблема заключается в том, что браузер не может загружать файлы css по запросу по протоколу https.
Проблема связана с файлом htaccess, потому что когда я удалил его, файлы css загрузились правильно.

страницы и CSS файлы, загруженные в браузере с HTTPS в их URL, как этот

<link rel="stylesheet" type="text/css" href="https://www.example.com/includes/templates/classic/css/style1.css"> 
<link rel="stylesheet" type="text/css" href="https://www.example.com/includes/templates/classic/css/style2.css"> 

, когда браузер пытается загрузить файлы CSS, он будет перенаправлен на

http://www.example.com/site_map.html 

Как Можно ли htaccess разрешить https открывать файлы css и js в определенной папке?

Благодаря

UPDATE Содержание файл .htaccess

RewriteEngine On 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteRule (.*) http://www.example.com/$1 
############################################################################### 
# Common directives 
############################################################################### 
# NOTE: Replace /shop/ with the relative web path of your catalog in the "Rewrite Base" line below: 

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L] 

#RewriteBase/

############################################################################### 
# Start Ultimate SEO URLs 
############################################################################### 

# Original (unchanged) URL formats 
RewriteRule ^(.*)-p-([0-9]+)(.*)$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L] 
RewriteRule ^(.*)-c-(.*)-p(.*)\.html$ /index.php?main_page=$4&cPath=$2&sort=$5&page=$3 
RewriteRule ^(.*)-c-([0-9_]+)(.*)$ index\.php?main_page=index&cPath=$2&%{QUERY_STRING} [L] 
RewriteRule ^(.*)-ez-(.*).html$ index.php?main_page=page&id=$2 [L] 

# All other pages 
# Don't rewrite real files or directories 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index\.php?main_page=$1&%{QUERY_STRING} [L] 


# Block out any script trying to base64_encode data within the URL. 
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR] 
# Block out any script that includes a <script> tag in URL. 
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] 
# Block out any script trying to set a PHP GLOBALS variable via URL. 
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] 
# Block out any script trying to modify a _REQUEST variable via URL. 
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) 
RewriteRule index.html$ index.php [QSA] 


# 480 weeks 
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Cache-Control "max-age=290304000, public" 
</FilesMatch> 

# 2 DAYS 
<FilesMatch "\.(xml|txt)$"> 
Header set Cache-Control "max-age=172800, public, must-revalidate" 
</FilesMatch> 

# 2 HOURS 
<FilesMatch "\.(html|htm)$"> 
Header set Cache-Control "max-age=7200, must-revalidate" 
</FilesMatch> 
# compress text, html, javascript, css, xml: 
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html 
AddOutputFilterByType DEFLATE text/xml 
AddOutputFilterByType DEFLATE text/css 
AddOutputFilterByType DEFLATE application/xml 
AddOutputFilterByType DEFLATE application/xhtml+xml 
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/javascript 
AddOutputFilterByType DEFLATE application/x-javascript 

RewriteEngine on 
RewriteBase/

ErrorDocument 404 /index.php 
RewriteRule index.html$ index.php [QSA] 
+0

Можете ли вы разместить содержимое '.htaccess'? – joews

+0

Я обновил вопрос – developer

ответ

3

Вот ваша проблема:

RewriteCond %{SERVER_PORT} ^443$ 
RewriteRule (.*) http://www.example.com/$1 

Вы не позволяют SSL запросы (443 номер порта используется для запросов HTTPS). Попробуйте удалить эти строки.

4

Скорее всего, внутри вашего HTML кода у вас есть что-то вроде

<link href="http://someSite.com/css/someStyle.css" rel="stylesheet" type="text/css" /> 

вы должны изменить это

<link href="https://someSite.com/css/someStyle.css" rel="stylesheet" type="text/css" /> 

также страница, которую вы имеете в виду это .html не CSS, но я думаю, что это опечатка ...

+0

Когда страница загружена https и css-файлами, url также использовал https.поскольку, когда браузер выполнил его, ответ сервера с страницей перенаправления, который является «http://www.example.com/site_map.html» в моем случае – developer

+1

У меня был http в моем файле css. переход на htpps также сработал. благодаря! – Jona

+0

@loannis Loukeris, 'http' и 'hhtps' должны быть динамичными. Пользователь может просматривать любой из них. Спасибо –

11

Если вы способны служить CSS и т.д. через HTTPS, то лучшим решением является use // as the scheme для URL-активов.

Это означает, что «использовать ту же схему (иногда называемый протоколом ) в качестве исходного документа», то есть использовать https если страница использует https. Например:

<link rel="stylesheet" href="//mysite.com/styles.css"> 
<script src="//mysite.com/app.js"></script> 
+1

Вы пропустили домен URL – andale

+0

, пожалуйста, ознакомьтесь с обновлением по моему вопросу – developer

+0

@andale Вы правы, спасибо. – joews

1

Я использовал плагин cloudflare, как описано в их руководстве here.

Смежные вопросы