base_url sia per http che per https?


7

Ho un sito accessibile sia tramite http che https. Vedo i reclami della revisione di sicurezza che base_urlnon sono definiti in settings.php.

Tuttavia, quando lo definisco come http://example.com, e svuoto tutte le cache, il mio modello in https non viene visualizzato.

Quando commento la $base_urlriga in settings.phptutto torna alla normalità.

Come posso risolvere questo problema?


Stavo per fare questa domanda. Il problema è che la maggior parte dei browser bloccherà il contenuto non sicuro quando richiede su SSL. Quindi, se base_url è example.com ma accedi al sito tramite example.com il tuo browser non caricherà i file dei temi. Il modulo "Pagine sicure", drupal.org/project/securepages , credo, ti consente di definire una base_url sicura e non sicura, sebbene quel modulo sia attualmente in beta.
Screenack,

Cordiali saluti, ho appena testato le pagine sicure. Imposta un base_url sicuro e non sicuro, ma il base_url globale vale ancora per le risorse del tema. Quindi no, non una soluzione.
Screenack,

Risposte:


5

Probabilmente devi fare qualcosa del genere:

$protocol = (!empty($_SERVER['HTTPS'])) ? 'https' : 'http';
$base_url = $protocol . '://mysite.com';

... in modo che Drupal sappia quale protocollo utilizzare in base alla modalità di accesso al sito.


3

Ho avuto fortuna con:

$base_url = '//mysite.com';  

Inoltre, per mantenere il cookie di sessione, di solito aggiungo:

$conf['https'] = TRUE;

che consente la modalità mista.


Questa risposta è corretta, dovrebbe essere contrassegnata come tale.
Rolando Isidoro,

Questa è una risposta errata poiché rende tutto url('path', array('absolute'=>TRUE));come //mysite.com/path. Dovresti usare l'approccio di @ colan piuttosto che questo.
zaporylie,

Questa risposta potrebbe anche interrompere l'accesso su Chrome. La risposta di @Colan è la risposta corretta.
Jenlampton,

2

Questo funziona bene per me con diversi domini sulla stessa installazione di Drupal su CloudFlare:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
  $base_url = $_SERVER["HTTP_X_FORWARDED_PROTO"] . '://' . $_SERVER['HTTP_HOST'];
} else {
  $base_url = 'http://' . $_SERVER['HTTP_HOST'];
}

In questo modo funziona anche con SSL flessibile CloudFlare. Posso accedere al sito sia con che senza SSL.

(Sembra che non ti serva il modulo Cloudflare, ma non farebbe male neanche per abilitarlo.)


Se hai intenzione di usare qualunque intestazione host inviata, non sono sicuro che valga la pena $ base_url a questo punto, perché Drupal lo rileverà automaticamente se non lo specifichi.
Brian,

Welkom (terug) in het land van 1K ... usa i privilegi che ne derivano saggiamente!
Pierre.Vriens,

0

Sfortunatamente il problema con l'impostazione del protocollo relativo all'URL accessibile è che il sito fa riferimento solo a quello quando si creano i file memorizzati nella cache e quindi crea tutti i riferimenti a file e risorse in base al protocollo utilizzato per ricostruire la cache del sito.

Quindi, se si ricostruisce la cache da https, tutti i collegamenti sono https. Se si ricostruisce il sito da http, tutti i collegamenti sono http.

La ricostruzione da https funziona meglio, ma i browser potrebbero comunque bloccare il contenuto sicuro e richiedere agli utenti di consentire manualmente il contenuto bloccato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.