Questo articolo descrive la causa del seguente messaggio di errore e come risolvere il problema:
The provided host name is not valid for this server.
Quando lavori con Drupal 8, potresti ricevere questo messaggio di errore quando scorri in qualsiasi pagina e vedi una semplice pagina bianca.
Avviso: Prima di utilizzare queste istruzioni per la risoluzione dei problemi, assicurati di aver compreso il tuo ambiente poiché questi passaggi per la risoluzione dei problemi potrebbero non essere adatti a tutte le impostazioni o configurazioni. Inoltre, ti consigliamo di eseguire un backup prima di apportare modifiche al tuo sistema in modo da avere la possibilità di ripristinare le modifiche se necessario.
Fonte dell'errore
Questo messaggio di errore proviene da una funzionalità che è stata aggiunta a Drupal per la protezione dagli attacchi di intestazione host HTTP. Il record di modifica generato per la patch descrive la funzionalità.
Sfortunatamente, è possibile falsificare l'intestazione dell'host HTTP per scopi nefasti e indurre Drupal a utilizzare un nome di dominio diverso in diversi sottosistemi (in particolare la generazione di collegamenti). Pertanto, dovresti considerare l'intestazione dell'host HTTP come input dell'utente non attendibile.
Correzione per questo errore
Per combattere questo problema, Drupal ha aggiunto la seguente impostazione per configurare un elenco di nomi host attendibili da cui il sito può essere eseguito.
$settings['trusted_host_patterns']
L'impostazione è una matrice di modelli di espressioni regolari, senza delimitatori, che rappresentano i nomi host da cui si desidera consentire l'esecuzione.
Ad esempio, se esegui il tuo sito da un unico nome host www.example.com
, dovresti aggiungerlo alle tue impostazioni (di solito si trova in ./sites/default/settings.php
):
$settings['trusted_host_patterns'] = array( '^www\.example\.com$', );
Nota :^, \. e $ sono la sintassi delle espressioni regolari compatibili con Perl (PCRE) e significano che vuoi abbinare www.example.com
precisamente, senza niente in più all'inizio o alla fine, e che i punti dovrebbero essere trattati come punti e non caratteri jolly.
Se stai eseguendo da "example.com", utilizza quanto segue:
$settings['trusted_host_patterns'] = array( '^example\.com$', );
Se devi eseguire un sito con più domini o sottodomini e non stai eseguendo il reindirizzamento URL canonico, la tua impostazione dovrebbe essere simile al seguente esempio:
$settings['trusted_host_patterns'] = array( '^example\.com$', '^.+\.example\.com$', '^example\.org', '^.+\.example\.org', );
Ciò consente al sito di funzionare da tutte le varianti di esempio.com ed esempio.org con tutti i sottodomini inclusi.
Se hai configurato questa impostazione e vedi ancora il messaggio di errore, probabilmente non stai usando la sintassi dell'espressione regolare corretta. In questo caso, prendi il primo esempio in questo articolo, copialo e incollalo nelle tue impostazioni, quindi modificalo per riflettere il nome host da cui viene eseguito il tuo sito.
Dopo aver modificato $settings['trusted_host_patterns']
al valore corretto, dovresti essere in grado di navigare di nuovo sul tuo sito.
Rimozione dell'impostazione
Se si rimuove del tutto l'impostazione, il meccanismo dell'host attendibile non viene utilizzato e viene visualizzato un errore nella pagina del rapporto di stato. Inoltre, il tuo sito potrebbe essere vulnerabile agli attacchi di intestazione host HTTP.
Verifica stato
Puoi controllare lo stato delle impostazioni del tuo host attendibile dalla pagina statusreport, che si trova in admin/reports/status
.