Attivare i permalink con nome dell’articolo sul sito di Staging

Quando crei un sito di Staging predefinito che si trova in una sottocartella, WP STAGING imposta l’opzione “Permalink” del sito di Staging su “Semplice” e disattiva l’opzione “Permalink con nome dell’articolo”. Questo serve a garantire che il sito di Staging si apra correttamente su tutti i tipi di server.

Se usi la versione PRO di WP STAGING e hai creato un sito di Staging in un sottodominio come staging.example.com puoi attivare i permalink con nome dell’articolo da wp-admin > impostazioni > permalink. Dovrebbe funzionare immediatamente.

La versione Pro di WP STAGING ha l’opzione “Mantieni permalink“. Ogni volta che crei un nuovo sito di Staging e attivi questa opzione, il sito di Staging userà esattamente la stessa struttura dei permalink del sito live. Trovi questa opzione in WP STAGING > Impostazioni > Mantieni permalink.

Se attivi questa opzione e il sito di Staging ti reindirizza al sito live o mostra un errore 404, segui questo articolo!

In generale, va bene usare permalink semplici su un sito di Staging. Spesso, non c’è alcuna necessità tecnica di attivare permalink personalizzati per trarre vantaggio da un sito di Staging.

Tuttavia, se vuoi attivare i permalink personalizzati sul tuo sito di Staging per avere la stessa struttura dei link, devi prima determinare quale server web è in esecuzione sul tuo server o piano di Hosting.

Devi accedere alla bacheca di amministrazione del tuo sito di Staging WordPress per attivare i permalink con nome dell’articolo.

Se provi ad accedere alla bacheca di amministrazione del tuo sito di Staging e il sito di Staging ti reindirizza al sito live, aggiungi lo slug wp-admin alla fine dell’URL, in questo modo: https://example.com/stagingsite/wp-admin

Questo ti permette di accedere alla wp-admin del tuo sito.

(Un reindirizzamento del genere può accadere se usi Plugin per le lingue come WPML o Polylang, che aggiungono uno slug della lingua all’URL. Questi Plugin spesso hanno bisogno che i permalink siano attivati)

Server web Apache

Se il server web Apache serve il tuo sito, è molto probabile che i permalink ottimizzati per i motori di ricerca funzionino senza alcun lavoro aggiuntivo.

Attiva semplicemente i permalink nella pagina:

Sito di Staging > wp-admin > Impostazioni > Permalink
 

Molto probabilmente funzionerà bene fin dall’inizio.

Se questo non dà il risultato previsto e i link sul sito di Staging restituiscono un errore 400, crea un nuovo file .htaccess e incollalo nella radice del sito di Staging usando un client FTP o un Plugin di gestione file.

Il contenuto di quel file dovrebbe essere simile a questo:

# BEGIN WordPress 
RewriteEngine On 
RewriteBase /staging/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /staging/index.php [L] 
# END WordPress

Sostituisci il testo evidenziato staging con il nome della sottocartella in cui si trova il sito di Staging!

Server web Apache | Multisite

Di solito, WP STAGING si occupa di apportare le modifiche necessarie al .htaccess se cloni un multisite WordPress.

Le seguenti regole verranno inserite in un file .htaccess nella radice del sito di Staging per un multisite in un sottodominio e in una sottocartella:

Multisite in sottodominio, ad esempio staging.example.com

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Multisite in sottocartella, ad esempio example.com/staging

RewriteEngine On
RewriteBase /staging/
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Sostituisci il testo evidenziato staging con il nome della sottocartella in cui si trova il sito di Staging!

Server web Nginx

Se il tuo sito usa Nginx, prova prima ad attivare i permalink ottimizzati per i motori di ricerca sul sito di Staging. Se non funziona, segui i passaggi qui sotto per attivare i permalink in Nginx.

Apri wp-admin e vai a Impostazioni > Permalink, poi seleziona Nome articolo.

Per testare, apri la pagina iniziale del tuo sito e clicca un link qualsiasi.
Se la pagina si apre come previsto, hai finito. Se restituisce un errore 404, usa i passaggi avanzati qui sotto:

Crea un nuovo blocco server in nginx.conf simile a questo snippet:

location /staging{
        try_files $uri $uri/ /staging/index.php?$args;
}

Sostituisci il testo evidenziato staging con il nome della sottocartella in cui si trova il sito di Staging!

Inoltre, cambia il percorso del file socket di PHP se è diverso nel tuo sistema. Questo dovrebbe darti solo un’idea di cosa modificare. Non usare questi valori parola per parola senza verificare se la tua configurazione NGINX è diversa.

Tieni presente che devi avere accesso completo al server per seguire i passaggi sopra. Se non hai idea di cosa facciano queste righe, è meglio chiedere a qualcuno di assisterti con le modifiche o lasciare i permalink disattivati.

Dopo averlo fatto, il server Nginx deve essere riavviato, e potrai goderti il tuo sito di Staging con i permalink personalizzati attivi.

Questo richiederà sempre di configurare uno specifico blocco Nginx con il nome della cartella del sito di Staging.

Un altro approccio opzionale è creare un blocco server e lasciare che Nginx esegua una riscrittura automatica ogni volta che WordPress viene caricato da una sottocartella:

PHP
# Matches /<folder>/... – except for WP core folders
location ~ ^/(?!wp-admin|wp-content|wp-includes)([a-zA-Z0-9_-]+)(?:/|$) {
    set $first_seg $1;
    # First try static files/folders …
    try_files $uri $uri/ @maybe_staging;
}

# Checks whether /<folder>/index.php exists; if so, rewrite there,
# otherwise fall back to the live front controller.
location @maybe_staging {
    if (-f $document_root/$first_seg/index.php) {
        rewrite ^ /$first_seg/index.php?$args last;
    }
    rewrite ^ /index.php?$args last;
}

Server web NGINX per multisite

I multisite WordPress hanno bisogno di una configurazione leggermente diversa.

Qui sotto trovi un esempio di nginx.conf per un multisite di Staging in una sottocartella.

Abbiamo evidenziato le parti rilevanti. Dopo aver aggiunto questa configurazione al tuo nginx.conf devi riavviare il server NGINX.

Se il tuo server usa NGINX e non sai dove aggiungere questa configurazione, contatta il tuo provider di Hosting.

Sito di Staging in sottocartella, ad esempio example.com/staging

server {
listen 80; listen [::]:80;
server_name example.com/staging;

root /var/www/multi; # This is the path to your multisite website

if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/staging(/[^/]+)?(/wp-.*) /staging$2 last;
rewrite ^/staging(/[^/]+)?(/.*\.php)$ /staging$2 last;
}

location / {
try_files $uri $uri/ /index.php?$args;
}

location /staging/ {
try_files $uri $uri/ /staging/index.php?$args ;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}

Sostituisci il testo evidenziato staging con il nome della sottocartella in cui si trova il sito di Staging!

Sito di Staging in sottodominio, ad esempio staging.example.com

Se il tuo sito di Staging si trova in un sottodominio, puoi usare la stessa configurazione di sopra ma con una piccola modifica:

server {
listen 80; listen [::]:80;
server_name staging.example.com;

# Below should be the path to your staging site
root /var/www/multi/staging; 

if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/(/[^/]+)?(/wp-.*) /$2 last;
rewrite ^/(/[^/]+)?(/.*\.php)$ /$2 last;
}

location / {
try_files $uri $uri/ /staging/index.php?$args ;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}

Sostituisci il testo evidenziato staging con il nome della sottocartella in cui si trova il sito di Staging.

Bitnami (Apache)

Devi seguire dei passaggi aggiuntivi se usi WordPress in un’istanza Bitnami.

I permalink con nome dell’articolo non sono supportati di default nelle istanze WordPress di Bitnami perché Bitnami non usa .htaccess nella cartella radice del sito. Ignora qualsiasi file .htaccess presente lì.

Bitnami non usa il file .htaccess predefinito nella radice del tuo sito; al suo posto, tutte le configurazioni htaccess vengono aggiunte a un file chiamato: /opt/bitnami/apps/APPNAME/conf/htaccess.conf.

Quindi, se vuoi far funzionare i permalink, devi modificare il file htaccess.conf

Vai a quel file e aggiungi quanto segue:

<Directory /opt/bitnami/apps/wordpress/htdocs/STAGING>
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /STAGING/
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /STAGING/index.php [L]
 </IfModule>
 </Directory>

Importante: rinomina la parola STAGING con il nome della cartella del tuo sito di Staging!
 

Un’altra opzione sarebbe mantenere i permalink sulle impostazioni semplici, e in tal caso non devi modificare affatto htaccess.conf.

Microsoft Azure

Azure usa il server Microsoft IIS e richiede un web.config personalizzato nella radice della directory web del sito di Staging.

Prima, devi visualizzare il file web.config sul sito “live” e annotare il nome della regola da questa riga:

<rule name="WordPress: http://wordpress-arc.azurewebsites.net" patternSyntax="Wildcard">

In questo esempio è WordPress: http://wordpress-arc.azurewebsites.net.

Poi crea un nuovo file web.config nella directory del sito “staging” con quanto segue:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
      <remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>
      <rule name="staging" patternSyntax="Wildcard">
        <match url="*"/>
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
        <action type="Rewrite" url="index.php"/>
      </rule></rules>
    </rewrite>
  </system.webServer>
</configuration>

Assicurati che questa riga:

<remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>

abbia lo stesso nome di regola definito nel file web.config del sito live, che nel nostro esempio era  WordPress: http://wordpress-arc.azurewebsites.net.

Microsoft IIS

  • Prima, apri il file web.config nella directory radice del sito live per annotare questa riga:
    <rule name=”WordPress: https://example.com/” patternSyntax=”Wildcard”>
    In particolare il nome della regola: WordPress: https://example.com/
  • Poi crea un nuovo file web.config nella directory del sito di Staging con questo snippet di codice:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
     <rewrite>
      <rules>
        <remove name="WordPress: https://example.com/" />
        <rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard">
         <match url="*"/>
          <conditions>
           <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
           <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
         <action type="Rewrite" url="index.php"/>
        </rule></rules>
       </rewrite>
   </system.webServer>
</configuration>

Assicurati che la riga <remove name="WordPress: https://example.com/" /> abbia lo stesso “name” che hai nel web.config del sito live.

E assicurati che questa riga <rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard"> abbia il nome corretto della directory del sito di Staging.

Updated on Maggio 23, 2026

Rene Hermenau

Autore: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.