2015-05-25 13 views
21

Ho un sito Web che ci lavora. quando apro una pagina con protocollo http: //, ogni cosa viene caricata correttamente, ma quando provo a caricare la pagina con protocollo https, la pagina viene caricata ma senza file css e javascript.
La console mostra i seguenti errori.Pagina dei contenuti misti: richiesto un errore del foglio di stile non sicuro

contenuto misto: La pagina all'indirizzo 'https://www.example.com/index.php?main_page=login' stato caricato tramite HTTPS, ma ha richiesto un foglio di stile insicuro 'http://www.example.com/site_map.html'. Questa richiesta è stata bloccata; il contenuto deve essere pubblicato su HTTPS.

Ho capito che il problema è che il browser non può caricare alcun file css quando richiesto dal protocollo https.
Il problema è con il file htaccess, perché quando lo ho rimosso, i file CSS sono stati caricati correttamente.

I file di pagina e CSS caricati al browser con https nel loro URL come questo

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

quando il browser tenta di caricare i file CSS, che viene reindirizzato a

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

Come posso fare htaccess consentire a https di aprire i file css e js in una cartella specifica?

Grazie

UPDATE Il contenuto del file .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

Puoi pubblicare il contenuto di '.htaccess'? – joews

+0

Ho aggiornato la domanda – developer

risposta

3

Ecco il problema:

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

Non si accettano richieste SSL (443 numero di porta viene utilizzato per le richieste HTTPS). Prova a rimuovere queste linee.

4

Molto probabilmente all'interno del vostro codice html avete qualcosa come

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

si dovrebbe cambiare questo per

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

anche la pagina a cui ti riferisci non è .html css, ma credo che sia un errore di battitura ...

+0

Quando la pagina viene caricata con i file https e css, anche url ha usato https.per quando il browser l'ha opta, la risposta del server con la pagina di reindirizzamento che è 'http://www.example.com/site_map.html' nel mio caso – developer

+1

ho avuto un http nel mio file css. cambiare anche in htpps ha funzionato. Grazie! – Jona

+0

@loannis Loukeris, 'http' e 'hhtps' dovrebbero essere dinamici. L'utente può navigare usando uno qualsiasi. Grazie –

11

Se si è in grado di servire i CSS ecc su HTTPS, la soluzione migliore è quella di use // as the scheme per gli URL di asset.

che significa "usa lo stesso schema (a volte chiamato protocollo) come il documento principale", vale a dire utilizzare https se la pagina utilizza https. Per esempio:

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

Hai perso il dominio dell'URL – andale

+0

per favore guarda l'aggiornamento sulla mia domanda – developer

+0

@andale Hai ragione, grazie. – joews

1

Ho utilizzato il plug-in di cloudflare come descritto nella guida here.

Problemi correlati