Errore 404 wordpress nginx azure , come risolvere

Errore 404 wordpress nginx azure , come risolvere

Come risolvere l'errore 404 WordPress in Nginx

Per chi realizza siti WordPress è oramai una prassi sfruttare la funzione permalink per poter indirizzare le pagine con il titolo dell'articolo, questa funzione garantisce ottimi risultati in termini di SEO. Può capitare però che modificando il permalink il sito non sia più navigabile , mostrando solo la home page  ed un fastidiosissimo errore "404 Page Not Found" quando si clicca su qualsiasi link.

Nel nostro caso ci siamo imbattuti in questo problema passando dalla versione di php 7 alla 8 sulla nostra webapp su azure.

Per risolvere un problema bisogna sempre individuare la causa, in questo caso la funzione permalink sfrutta la modifica del file  .htaccess un file che contiene delle direttive di configurazione che permettono al web server di capire come indirizzare le richieste http ricevute.  Dunque il problema si presenta quando il nostro hosting usa un webserver diverso da Apache e non riconosce le direttive presenti nel file .htaccess. Nel nostro caso il webserver è Nginx.

Infatti su azure passando a php 8 l'immagine docker usa il web server Nginx quindi si manifesta il problema discusso nel nostro articolo.

La soluzione

Per risolvere il problema dunque bisogna intervenire sul file di configurazione di Nginx inserendo il seguente codice nella sezione location /

try_files $uri $uri/ /index.php?$args;

Per chi come nel nostro caso usa il servizio Webapp di Microsoft Azure ha un secondo problema in quanto con l'accesso ssh non si ha la possibilità di modificare il file di configurazione di nginx.  Infatti ogni volta che si riavvia la web app i file di configurazione vengono rimpiazzati da quelli previsti nell'immagine docker di conseguenza per fare delle modifiche bisogna trovare un workaround.

Ecco quindi i passaggi da compiere

1. Copiare il file di configurazione di Nginx nella propria cartella home di Azure;

2. Modificare il file di configurazione con le istruzioni per trattare i permalink;

3. Configurare la web app di azure in modo che all'avvio sovrascrivi il file di configurazione di nginx con la copia nella nostra home.

Vediamo di seguito ognuno dei seguenti passaggi.

Predisporre il file di configurazione di Nginx

Come prima cosa dobbiamo far sì di poter modificare il file di configurazione del web server nella nostra webapp azure. Accediamo in ssh  utilizzando l'apposito tool di azure :

https://[APPNAME].scm.azurewebsites.net/webssh/host

Una volta entrati dobbiamo copiare il file di configurazione dell'istanza di Nginx nella nostra cartella home con il seguente comando

cp /etc/nginx/sites-enabled/default /home/default

Modificare il file di configurazione

A questo punto siamo a metà dell'opera dobbiamo editare il file di configurazione appena creato con il comando :

  vi /home/default

Modifichiamo quindi la sezione location / aggiungendo l'istruzione

try_files $uri $uri/ /index.php?$args;

dopo il nostro intervento la sezione dovrebbe presentarsi così:

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

Salviamo con ESC : X

Inserimento comando di startup

A questo punto non ci resta che concludere l'attività con gli ultimi passaggi, configurare l'app di azure in modo che rimpiazzi il file di configurazione di nginx con il nostro.

Per fare questo accediamo all'area di configurazione della webapp sul nostro account Azure e inseriamo tra i comandi di avvio il seguente :

cp /home/default /etc/nginx/sites-enabled/default; service nginx restart
Mostriamo un immagine che vi aiuterà in questa operazione


Riavviate la webapp ed il gioco è fatto!!!

Vuoi Sviluppare un Progetto in CLOUD e/o APP MOBILE?