{"id":485,"date":"2017-10-09T11:00:00","date_gmt":"2017-10-09T09:00:00","guid":{"rendered":"http:\/\/www.eugigufo.net\/it\/?page_id=485"},"modified":"2024-10-01T13:57:11","modified_gmt":"2024-10-01T11:57:11","slug":"paragrafo3","status":"publish","type":"page","link":"https:\/\/eugigufo.net\/it\/inerario\/paragrafo3\/","title":{"rendered":"\u00a7\u00a03. Come installare due WordPress su\u00a0un\u00a0hosting Windows"},"content":{"rendered":"<p>Oggi scrivo di\u00a0un\u00a0problema molto pi\u00f9 ricorrente di\u00a0quanto si\u00a0possa pensare.<br \/>\n<b>Il\u00a0problema<\/b><br \/>\nSupponiamo di\u00a0voler installare due WordPress sullo stesso dominio: il\u00a0primo nella root (sito.it) e\u00a0il\u00a0secondo in\u00a0una cartella (sito.it\/cartella). Il\u00a0risultato che attendiamo \u00e8\u00a0il\u00a0seguente:<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art3wprootetcartella.jpg\" title=\"come installare su WordPress su un server Windoes\" border=\"0\"><br \/>\nNaturalmente, non sorge alcun problema qualora decidessimo di\u00a0installare solo una copia di\u00a0WordPress oppure installarne due o\u00a0pi\u00f9 nelle cartelle dello stesso livello (per esempio, sito.it\/cartella1, sito.it\/cartella2\u00a0etc.). Installando invece i\u00a0due WordPress nella root e\u00a0nella cartella, ci\u00a0troviamo di\u00a0fronte al\u00a0non-funzionamento del secondo: al\u00a0tentativo di\u00a0aprire qualsiasi pagina appartenente a\u00a0sito.it\/cartella esce l\u2019errore 404.<br \/>\n<b>Le\u00a0soluzioni<\/b><br \/>\nQualora il\u00a0nostro server avesse il\u00a0sistema operativo Linux, avremmo potuto limitarci a\u00a0inserire nella cartella sito.it\/cartella (dove sta il\u00a0nostro WordPress\u00a0\u2116\u00a02) un\u00a0file .htaccess come questo:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 1; notranslate\" title=\"listing 1\">\n# BEGIN WordPress\n\n&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteBase \/\nRewriteRule ^index\\.php$ - &#x5B;L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule . \/index.php &#x5B;L]\n&lt;\/IfModule&gt;\n\n# END WordPress\n<\/pre>\n<p>&#8230; permettendo in\u00a0questo modo di\u00a0convivere pacificamente a\u00a0sito.it con sito.it\/cartella<br \/>\nSu\u00a0un\u00a0server Windows, invece, non \u00e8\u00a0possibile utilizzare il\u00a0file .htaccess Di\u00a0conseguenza, dobbiamo convertirlo in\u00a0un\u00a0file web.config Esistono alcuni strumenti online e\u00a0offline che permettono di\u00a0effettuare la\u00a0conversione in\u00a0automatico, ma\u00a0tutti essi hanno lo\u00a0stesso problema: non sanno convertire il\u00a0comando RewriteBase (il\u00a0quale \u00e8\u00a0fondamentale per evitare la\u00a0comparsa dell\u2019errore\u00a0404\u00a0al posto di\u00a0tutte le\u00a0pagine del WordPress installato nella cartella). Sostituiscono semplicemente quel comando con una riga di\u00a0commento, senza avvisarci che in\u00a0questo modo l\u2019intero file diventa non funzionante.<br \/>\nIo, dunque, sono giunto alla seguente soluzione.<br \/>\nCreiamo due file web.config. Il\u00a0primo, quello pi\u00f9 semplice, lo\u00a0mettiamo nella root dove \u00e8\u00a0installato il\u00a0WordPress\u00a0\u2116\u00a01. Ecco il\u00a0suo codice:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 2; notranslate\" title=\"listing 2\">\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;!--Questo file sta nella cartella della root.--&gt;\n&lt;configuration&gt;\n\u00a0 &lt;system.webServer&gt;\n\u00a0\u00a0\u00a0 &lt;rewrite&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;rules&gt;\n\u00a0\u00a0 \u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;rule name=&quot;nomeregolaroot&quot; patternSyntax=&quot;Wildcard&quot;&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;match url=&quot;*&quot;\/&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;conditions&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsFile&quot; negate=&quot;true&quot;\/&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsDirectory&quot; negate=&quot;true&quot;\/&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/conditions&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;action type=&quot;Rewrite&quot; url=&quot;index.php&quot;\/&gt;\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/rule&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/rules&gt;\n\u00a0\u00a0\u00a0 &lt;\/rewrite&gt;\n\u00a0 &lt;\/system.webServer&gt;\n&lt;\/configuration&gt;\n<\/pre>\n<p>Il\u00a0secondo file web.config \u00e8\u00a0invece pi\u00f9 complesso e\u00a0va\u00a0caricato nella cartella dove \u00e8\u00a0installato il\u00a0WordPress\u00a0\u2116\u00a02. Eccolo:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 3; notranslate\" title=\"listing 3\">\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;!--Questo file sta nella cartella caricata nella root.--&gt;\n&lt;configuration&gt;\n\u00a0 &lt;system.webServer&gt;\n&lt;rewrite&gt;\n\u00a0 &lt;rules&gt;\n\u00a0\u00a0\u00a0 &lt;clear \/&gt;\n\u00a0\u00a0 \u00a0&lt;rule name=&quot;nomeregola1&quot; stopProcessing=&quot;true&quot;&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&quot;^index\\.php$&quot; ignoreCase=&quot;false&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&quot;None&quot; \/&gt;\n\u00a0\u00a0\u00a0 &lt;\/rule&gt;\n\u00a0\u00a0\u00a0 &lt;rule name=&quot;nomeregola2&quot; stopProcessing=&quot;true&quot;&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&quot;.&quot; ignoreCase=&quot;false&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;conditions&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsFile&quot; ignoreCase=&quot;false&quot; negate=&quot;true&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsDirectory&quot; ignoreCase=&quot;false&quot; negate=&quot;true&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/conditions&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&quot;Rewrite&quot; url=&quot;\/cartella\/index.php&quot; \/&gt;\n\u00a0\u00a0\u00a0 &lt;\/rule&gt;\n\u00a0 &lt;\/rules&gt;\n&lt;\/rewrite&gt;\n\u00a0 &lt;\/system.webServer&gt;\n&lt;\/configuration&gt;\n<\/pre>\n<p>Attenzione! Alla riga 18\u00a0va indicato il\u00a0nome della cartella nella quale viene caricato il\u00a0relativo web.config (naturalmente al\u00a0posto di\u00a0\u00abcartella\u00bb).<br \/>\nBasta, ora entrambi i\u00a0WordPress devono funzionare correttamente.<br \/>\nSo\u00a0che in\u00a0teoria avrei potuto provare a\u00a0escludere l\u2019eredit\u00e0 delle regole nel web.config-\u00abpadre\u00bb o\u00a0inserire un &lt;remove&gt; delle regole ereditate nel web.config-\u00abfiglio\u00bb&#8230; Per\u00f2 io\u00a0di\u00a0solito preferisco le\u00a0soluzioni pi\u00f9 semplici che non richiedano delle pratiche mentali autolesive prolungate nel tempo. Sul mio sito (che state leggendo ora) ho\u00a0utilizzato proprio il\u00a0metodo appena descritto per fare due versioni linguistiche del sito stesso. Come potete vedere, funziona benissimo.<br \/>\nSe\u00a0volessimo ora installare altre copie di\u00a0WordPress in\u00a0altre cartelle pi\u00f9 profonde\u00a0\u2013 per esempio, sito.it\/cartella1\/cartella2\u00a0\u2013 ci\u00a0limitiamo a\u00a0inserire il\u00a0secondo web.config in\u00a0ognuna delle cartelle interessate dalla installazione. Dobbiamo solamente ricordarci di\u00a0indicare il\u00a0nome della cartella alla riga\u00a018.<br \/>\n\u00c8\u00a0importantissimo, inoltre, indicare tutta la\u00a0sequenza delle cartelle per i\u00a0WordPress installati nelle cartelle \u00abprofonde\u00bb. Supponiamo, per esempio, di\u00a0avere sempre il\u00a0costrutto sito.it\/cartella1\/cartella2 dove sono installati tre copie di\u00a0WordPress: la\u00a0prima nella root, la\u00a0seconda nella cartella1\u00a0e la\u00a0terza nella cartella2. La\u00a0riga 18\u00a0del file web.config caricato nella cartella2 deve essere cos\u00ec:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 4; notranslate\" title=\"listing 4\">\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;!--Questo file sta nella in una sottocartella (root\/cartella\/cartella\/).--&gt;\n&lt;configuration&gt;\n\u00a0 &lt;system.webServer&gt;\n&lt;rewrite&gt;\n\u00a0 &lt;rules&gt;\n\u00a0\u00a0 \u00a0&lt;clear \/&gt;\n\u00a0\u00a0 \u00a0&lt;rule name=&quot;nomeregola1cartella&quot; stopProcessing=&quot;true&quot;&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&quot;^index\\.php$&quot; ignoreCase=&quot;false&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&quot;None&quot; \/&gt;\n\u00a0\u00a0\u00a0 &lt;\/rule&gt;\n\u00a0\u00a0\u00a0 &lt;rule name=&quot;nomeregola2cartella&quot; stopProcessing=&quot;true&quot;&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;match url=&quot;.&quot; ignoreCase=&quot;false&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;conditions&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsFile&quot; ignoreCase=&quot;false&quot; negate=&quot;true&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add input=&quot;{REQUEST_FILENAME}&quot; matchType=&quot;IsDirectory&quot; ignoreCase=&quot;false&quot; negate=&quot;true&quot; \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/conditions&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;action type=&quot;Rewrite&quot; url=&quot;\/cartella1\/cartella2\/index.php&quot; \/&gt;\n\u00a0\u00a0\u00a0 &lt;\/rule&gt;\n\u00a0 &lt;\/rules&gt;\n&lt;\/rewrite&gt;\n\u00a0 &lt;\/system.webServer&gt;\n&lt;\/configuration&gt;\n<\/pre>\n<p>Il\u00a0metodo \u00e8\u00a0stato testato con successo dal sottoscritto.<br \/>\nSe\u00a0avete delle domande o\u00a0soluzioni alternative, scrivetemi pure!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il paragrafo dell\u2019\u201cInerario\u201d dedicato alla installazione delle coppie aggiuntive di WordPress nelle sottocartelle di un sito pubblicato su un hosting Windows.<br \/>\nQuesto paragrafo \u00e8 destinato agli sviluppatori backend masochisti.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":452,"menu_order":3,"comment_status":"open","ping_status":"closed","template":"inerarioart.php","meta":{"footnotes":""},"class_list":["post-485","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/comments?post=485"}],"version-history":[{"count":0,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/485\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/media?parent=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}