10 of 10 menu

React Router su hosting PHP

Come già sapete, dopo la build il progetto React rappresenta una normale staticità, che può essere caricata su qualsiasi hosting, e funzionerà immediatamente.

C'è, tuttavia, un problema con React Router. Il fatto è che Router durante il funzionamento cambia l'URL delle pagine nel browser. In questo caso, la pagina non viene effettivamente ricaricata, ma cambia solo l'URL tramite JavaScript.

In un sito, pubblicato su hosting, Router funzionerà. Ma, se ci si trova su una pagina del sito, diversa dalla home page, e la si ricarica, verrà visualizzato un errore 404.

Ed è logico, poiché il browser cercherà un file all'URL specificato, come funzionano normalmente i siti statici. E nella nostra applicazione quella pagina non esisterà, poiché noi la stiamo solo simulando, e in realtà tutta la nostra applicazione funziona su index.html.

Per risolvere il problema è necessario fare in modo che tutti gli URL che non portano a file realmente esistenti, vengano reindirizzati su index.html. Questo viene fatto tramite il server web, che funziona sull'hosting.

Gli hosting virtuali funzionano su PHP. Di solito come server viene utilizzato Apache. In esso è disponibile un file speciale .htaccess, con il quale è possibile impostare un reindirizzamento.

Per fare questo, nella root del vostro sito dovete posizionare un file .htaccess con il seguente contenuto:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [QSA,L]

Create un progetto con React Router.

Caricatelo sull'hosting. Assicuratevi che per impostazione predefinita il routing non funzioni.

Risolvete il problema utilizzando il file .htaccess.

debysvnluzl