2015-05-25 12 views
21

Mam działającą stronę internetową. kiedy otwieram dowolną stronę z protokołem http: //, wszystko jest ładowane poprawnie, ale kiedy próbuję załadować stronę z protokołem https, strona załadowana, ale bez css i pliku javascript.
Konsola pokazuje następujące błędy.Strona z zawartością mieszaną: zażądano błędu w niezabezpieczonym arkuszu stylów.

Mixed Treść: strona w 'https://www.example.com/index.php?main_page=login' został załadowany nad HTTPS, ale o niepewnego stylów 'http://www.example.com/site_map.html'. Ta prośba została zablokowana ; treść musi być obsługiwana przez HTTPS.

Uznałem, że problem polega na tym, że przeglądarka nie może załadować żadnych plików CSS, gdy zażąda tego protokół https.
Problem dotyczy pliku htaccess, ponieważ po jego usunięciu pliki css zostały załadowane poprawnie.

strony i css pliki załadowane do przeglądarki https w adresie URL jak ten

<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"> 

gdy przeglądarka próbuje załadować pliki CSS, jest przekierowywany do

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

Jak Czy mogę zrobić, że htaccess pozwala https otworzyć pliki css i js w określonym folderze?

Dzięki

UPDATE Zawartość pliku .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

Czy możesz opublikować zawartość '.htaccess'? – joews

+0

Zaktualizowałem pytanie – developer

Odpowiedz

3

Oto problem:

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

Nie pozwalają żądania SSL (443 numer portu jest używany dla żądań HTTPS). Spróbuj usunąć te linie.

4

Najprawdopodobniej wewnątrz kodu html masz coś

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

należy zmienić na

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

Również strona, do której się odnosisz, to .html, nie css, ale domyślam się, że to literówka ...

+0

Po załadowaniu strony z adresem https i css adres URL również użył https.gdy przeglądarka opowiadała, odpowiedź serwera z przekierowaniem strony, która jest "http://www.example.com/site_map.html" w moim przypadku – developer

+1

miałem http w moim pliku css. zmiana na htpps również zadziałała. dzięki! – Jona

+0

@loannis Loukeris, "http" i "hhtps" powinny być dynamiczne. Użytkownik może przeglądać za pomocą dowolnego. Dzięki –

11

Jeśli możesz obsługiwać CSS itp. Przez HTTPS, najlepszym rozwiązaniem jest use // as the scheme dla adresów URL zasobów.

Oznacza to, że „stosowanie tego samego schematu (czasami nazywane protokół) jako dokumentu macierzystego”, to znaczy używać https jeśli strona używa https. Na przykład:

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

Brak adresu URL domeny – andale

+0

zobacz aktualizację na moje pytanie – developer

+0

@andale Masz rację, dziękuję. – joews

1

Użyłem wtyczki cloudflare, jak opisano w ich przewodniku here.