bloginfo() e get_template_directory_uri() con SSL?

17 gen 2013, 01:48:27
Visualizzazioni: 16.7K
Voti: 4

Ho un tema WordPress che sto cercando di installare su un sito che utilizza esclusivamente SSL. Non esiste una versione non SSL del sito.

Il tema WordPress utilizza varie funzioni come bloginfo('pingback_url'), bloginfo('template_directory'), get_template_directory_uri(), ecc... Tutte le funzioni tipiche di un tema.

Tutte queste funzioni generano link http, non https, e di conseguenza nessuno di essi viene caricato, dato che non esiste una versione non SSL del sito.

Come posso forzare WordPress a usare https per TUTTO?

2
Commenti

Link? Quelle funzioni dovrebbero restituire URL HTTPS se hai impostato l'indirizzo del tuo sito su HTTPS. Come stai configurando il tuo sito per utilizzare SSL?

webaware webaware
17 gen 2013 01:58:20

Nota anche: problema simile segnalato qui, aggiornerò con una risposta se ne ricevo una.

webaware webaware
31 gen 2013 07:23:17
Tutte le risposte alla domanda 2
0

Prova a installare questo plugin per WordPress. http://wordpress.org/extend/plugins/wordpress-https/installation/ ma assicurati di leggere le istruzioni di installazione poiché ci sono alcune operazioni aggiuntive da fare dopo l'attivazione del plugin.

17 gen 2013 17:28:20
2

Se il tuo sito web è su un servizio di bilanciamento del carico che gestisce SSL, il tuo server potrebbe non ricevere alcun valore nella variabile di server $_SERVER['HTTPS'], e $_SERVER['SERVER_PORT'] potrebbe essere 80 quando dovrebbe essere 443 (vedi questa risposta su Stack Overflow per i dettagli).

Se questo è il caso e non puoi far modificare questa impostazione dal tuo hosting provider, potresti dover forzare manualmente e dire a PHP che comunque è in SSL. Imposta i tuoi URL home e sito per utilizzare https, in modo che tutti gli URL generati da WordPress vengano prodotti come URL https. Poi inserisci questo codice in un plugin (ecco uno già pronto, copialo nella cartella dei plugin e attivalo):

// se il sito è configurato per funzionare in SSL, forza il rilevamento SSL!
if (stripos(get_option('siteurl'), 'https://') === 0) {
    $_SERVER['HTTPS'] = 'on';
}

NB: questo potrebbe avere effetti indesiderati, perché probabilmente hai del codice (nei plugin o nel tuo codice) che verifica se la pagina è stata caricata via SSL e reindirizza in caso contrario. Il tuo server non sarà più in grado di testare questa condizione! Pertanto, dovresti anche aggiungere del JavaScript alla tua pagina per avere una certa garanzia che le tue pagine sicure vengano caricate via SSL (anche questo è fatto dal plugin già pronto):

<script>
if (document.location.protocol != "https:") {
    document.location = document.URL.replace(/^http:/i, "https:");
}
</script>

NB: questa soluzione non è infallibile! Tuttavia, dovrebbe coprire la maggior parte delle situazioni, con l'eccezione di qualcuno che disabilita JavaScript e poi modifica manualmente l'URL per forzarlo nuovamente su http. Se lo fa, forse merita che le sue credenziali della carta di credito vengano vendute a Elbonia.

1 feb 2013 05:20:48
Commenti

Volevo solo aggiungere a questo. Avevo un problema simile in cui l'URL veniva mostrato come HTTPS, ma WordPress visualizzava gli URL degli script e degli stili con HTTP e non HTTPS (il che fa sì che non vengano caricati perché i browser non permettono ai siti web di mescolare HTTP e HTTPS). Il motivo di questo problema era che sto usando il Flexible SSL di CloudFlare e la connessione tra l'utente e CloudFlare è sicura, ma la connessione tra CloudFlare e il server web non è sicura (quindi WordPress pensa che HTTPS sia disabilitato). Impostare $_SERVER['HTTPS'] su on risolve questo problema.

SameOldNick SameOldNick
3 feb 2015 02:34:06

Come nota aggiuntiva, ho installato lo strumento da riga di comando di wp da http://www.electrictoolbox.com/wordpress-enable-disable-plugins-command-line/ per abilitare il plugin.

BTR Naidu BTR Naidu
20 apr 2016 23:37:54