logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Risoluzione dei problemi con gli URL puliti in Drupal 8

04/10/2025, by Ivan

Nozioni di base

In Drupal 8 gli URL puliti sono abilitati per impostazione predefinita e non possono essere disattivati. Tuttavia, il modulo di riscrittura (mod_rewrite) deve essere installato sul vostro server web.

Controllate la barra degli indirizzi del browser. L’URL del vostro sito non dovrebbe contenere ?q= nell’indirizzo.

Esempio di “URL pulito” corretto:

http://www.example.com/node/83

Esempio di “URL pulito” non funzionante:

http://www.example.com/?q=node/83

Esistono ulteriori istruzioni per la configurazione degli URL puliti su diversi sistemi, come Apache, WAMP, XAMPP e IIS.

Configurazione del server per URL puliti

Potete leggere di più sui requisiti del server web.

Configurazione del server per URL puliti su un server dedicato con httpd.conf

Abilitare gli URL puliti su un server dedicato richiede i seguenti passaggi:

1. Abilitate mod_rewrite per Apache. Potete consultare il vostro hosting o la documentazione Apache per mod_rewrite per maggiori dettagli. È necessario assicurarsi che mod_rewrite sia attivo nella vostra installazione Apache.

Per verificare se mod_rewrite è disponibile in Apache2, potete eseguire dalla riga di comando:

apache2ctl -M

Su alcune distribuzioni la sintassi può essere:

apachectl -M

oppure

httpd -M

2. Controllate nell’output se rewrite_module è elencato tra i moduli.

Se il modulo non è presente nell’elenco, dovrà essere compilato o reso disponibile come modulo caricabile. In generale, potete dire ad Apache di caricare il modulo aggiungendo queste righe nel file di configurazione:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Assicuratevi di decommentare AddModule mod_rewrite.c se è presente ma commentato. In alternativa, potete attivarlo con il comando:

a2enmod rewrite

Questi comandi possono variare a seconda del sistema operativo o della versione di Apache, quindi consultate la documentazione ufficiale.

Non dimenticate di riavviare Apache affinché la nuova configurazione abbia effetto.

3. Individuate il file di configurazione Apache corretto per il vostro sito. A seconda della configurazione del server, potrebbe essere httpd.conf, vhost.conf, un file specifico del sito (come “default”) o apache2.conf. Di solito si trova in /etc/httpd/conf o /etc/apache2. Se non lo trovate, potete usare:

find /etc -name httpd* oppure find /etc -name apache2*
Se non avete i permessi di scrittura in questi file e gli URL puliti non funzionano subito, dovrete contattare l’amministratore di sistema o il provider di hosting. Potete comunque leggere questi file per diagnosticare i problemi.

4. Copiate o includete le direttive di Drupal direttamente nel file di configurazione. Trovate istruzioni su come includere le direttive di Drupal. Consultate il file .htaccess di Drupal per esempi di regole, come le seguenti per Drupal 8:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

Esempio per Debian 8 + Apache2 + ISPConfig, usando un pattern per tutti i siti:

<Directory /var/www/clients/*/*/web/>
  RewriteEngine on
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>

Assicuratevi di controllare il file .htaccess per la vostra versione di Drupal (8.x).

Nota: se non volete inserire le regole di riscrittura nel file di configurazione Apache, potete usare direttamente il file .htaccess di Drupal. In tal caso, assicuratevi che la direttiva AllowOverride nel file di configurazione Apache sia impostata su:

AllowOverride All
AccessFileName .htaccess

Leggete Behind the scenes con Apache .htaccess per un approfondimento, oppure la documentazione ufficiale Apache 2 per AllowOverride.

Nota sui MultiViews: Apache supporta una funzione chiamata “MultiViews” (content negotiation) che permette di accedere ai file senza estensione. Ad esempio, un file “evaluation.txt” può essere raggiunto tramite “example.com/evaluation”. Tuttavia, MultiViews può interferire con gli URL puliti di Drupal. Se non sapete cosa state facendo, disattivate MultiViews. Di default non è abilitato in Apache. Consultate la documentazione Apache per ulteriori dettagli.

Configurazione del server condiviso con .htaccess

L’installazione standard di Drupal include un file .htaccess di esempio, sufficiente per far funzionare gli URL puliti. Il file inizia con un punto, quindi può essere facilmente trascurato. Prima di attivare gli URL puliti, assicuratevi che sia presente.

Per verificarlo da terminale, usate ls -a per elencare anche i file nascosti.

Se il file è presente ma gli URL puliti non funzionano, provate i suggerimenti nella sezione seguente. Se ancora non funziona, contattate il vostro provider di hosting.

Risoluzione dei problemi

Verificare l’uso del file .htaccess

Apache deve essere configurato per rispettare le istruzioni nei file .htaccess. È disattivato per impostazione predefinita, ma la maggior parte degli host lo abilita. La direttiva AllowOverride All lo abilita.

Per verificare se .htaccess viene letto, potete (temporaneamente) aggiungere una riga errata al file per provocare un errore. Se la pagina restituisce un errore 500, .htaccess è attivo (poi rimuovete subito la riga). Se non accade nulla, .htaccess viene ignorato e dovrete abilitarlo come descritto sopra.

Configurazione di RewriteBase

Il parametro principale da controllare è RewriteBase. Si trova nel file .htaccess di Drupal o nel file httpd.conf. È commentato per impostazione predefinita e funziona nella maggior parte dei casi.

Se gli URL puliti non funzionano, provate ad impostarlo. Ad esempio, se il DocumentRoot è /var/www/ e Drupal è installato in /var/www/mysite/, impostate:

RewriteBase /mysite

In altre configurazioni può funzionare anche:

RewriteBase /

$base_url

Potrebbe essere necessario impostare manualmente la variabile $base_url in settings.php se non è già definita. I server che utilizzano FastCGI possono avere problemi se $base_url è commentata (vedi bug PHP 19656).

Installazioni multi-sito

RewriteBase funziona se Drupal gestisce un solo sito o più siti nello stesso sottodirectory dei rispettivi domini.

Esempio:

RewriteBase /

Funziona per:

http://www.example.com/
http://www.example2.com/
http://www.example3.com/

Se invece i siti si trovano in diverse sottocartelle, serve una regola personalizzata per ciascuna:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/mysite/
RewriteRule ^ /mysite/index.php [L]

Percorso del file index.php

In alcune configurazioni di server potrebbe essere necessario modificare la regola finale nel file .htaccess di Drupal. Cercate la riga:

RewriteRule ^ index.php [L]

Potrebbe essere necessario sostituire index.php con il percorso relativo corretto, ad esempio /subdir/index.php se Drupal è in una sottocartella. Questo dipende dalla configurazione del server.

Creare URL personalizzati con il modulo Path

Gli URL puliti permettono a Drupal di generare link come "http://www.example.com/node/83". Per trasformare la parte “node/##” in qualcosa come “news/june-1st-news”, è necessario attivare il modulo Path. Consultate la pagina di documentazione del modulo Path per ulteriori dettagli.