Supporto » Varie ed eventuali » WordPress in sottodirectory

  • Domanda che mi è sempre aleggiata in testa ma che non ho mai approfondito e magari qualcuno ne sa più di me.

    Solitamente quando sviluppo un sito lo metto in una sottodirectory (es. /web) e quando il sito è pronto per essere messo online cambio i parametri delle impostazioni per dire che il sito non sarà più nella sottodirectory, copio index.php nella root e la modifico e pubblico il tutto.

    Il sito funziona alla perfezione ovviamente ma c’è sempre il problema che se qualcuno aggiunge /web alla fine dell’url arriva sempre da qualche parte all’interno del sito oppure ottiene un 404.

    Non posso creare una redirection perché comunque il backend si trova sempre in /web/wp-admin

    Quindi mi chiedo come posso fare per fare in modo che se uno per caso aggiunge /web alla fine, arrivi comunque alla pagina home.

    Sono quasi certo che la soluzione è una stupidata ma non ci arrivo…

Stai visualizzando 11 risposte - dal 1 al 11 (di 11 totali)
  • Dunque il site_url (Site Adress) è l’indirizzo che vuoi che le persone digitino nel loro browser per raggiungere il tuo blog WordPress.
    Però inizialmente avevi un percorso diverso e nel caso di installazione singole WordPress devi modificare i vecchi percorsi in quelli nuovi mentre se usi WordPress multisite devi modificare wp_options, wp_options2 wp_site e altro come spiega il link di seguito, forse wp_options avrà già il tuo site_url corretto (poiché é stato impostato da te) però non so se i vecchi: post, file caricati potrebbero avere la vecchia url quindi crea un nuovo: post e carica una nuova immagine se il post é senza la cartella web dovrai modificare le voci che si riferiscono a site_url e se la cartella uploads é comprensiva di web/ allora non dovrà essere modificata https://wordpress.org/support/article/changing-the-site-url/#changing-the-url-directly-in-the-database

    Prima di qualsiasi operazione crea un back-up dei file e del database, non fare altri tentativi eccetto la modifica al database ma con plug-in (i temi, widget, plugin potrebbero serializzare i percorsi quindi manualmente é una cattiva pratica).

    Qui una lista di possibili opzioni per modificare il database https://wordpress.org/support/article/moving-wordpress/#changing-your-domain-name-and-urls
    *Ricorda devi modificare solo wp_site, wp_options unicamente per site_url nella maggior parte dei casi, se un plugin non indica cosa stai per cambiare non fare nulla piuttosto resta così.
    Scusami non esiste una guida chiara per quando c’è solo site_url a essere diverso ma con i doppi tentativi (provando e controllando il percorso di post e upload sarai certo di quale percorso é obbligatorio).

    Per i tuoi usi futuri imposta sin dall’inizio senza web nel percorso site_url, se ancora da browser vedrai un 404 o accedere alla cartella web quando il percorso iniziale é privo di web si dovrà procedere con una riscrittura url (htaccess o plugin redirection e similari) ad esempio /web/wp-admin/ sarà un percorso sempre valido (si dovrebbe stilare una lista quando la cartella web é legittima per il contensto WordPress url e ciò ne consegue che tutto il resto sarà valutato per il contesto Site url).

    Chi ha creato la discussione andreamarucci

    (@shiftsrl)

    Grazie ma forse mi sono spiegato male. Io non devo migrare un’installazione di WP in un’altra directory. Modificando il site_url tutto funziona correttamente e altrettanto correttamente tutti i contenuti sono presi dalla cartella /web

    Io dovrei solo fare in modo che se accedi direttamente alla cartella /web tu venga reindirizzato alla home page del sito senza /web.

    Per le migrazioni uso duplicator che fa tutto il lavoro “sporco” e funziona benissimo ma per scelta personale io preferisco sviluppare all’interno di una cartella e poi pubblicare.

    Si ma se inizialmente é web i dati sono salvati in web..

    Chi ha creato la discussione andreamarucci

    (@shiftsrl)

    Esatto e io vorrei che rimanessero lì. In sostanza il problema è solo di una possibile redirection in modo che se uno batte dominio.it/web finisca su dominio.it e basta. Proverei a farla con htaccess ma ho il grosso dubbio che poi mi si incasini la parte admin che ovviamente è dentro /web

    È anche il mio dubbio poiché non conosco cosa é idoneo per WordPress url e cosa per Site url.
    Altrimenti sarebbe facile stilare una regola htaccess.

    Puoi anche provare a postare una domanda chiara al supporto del plugin redirection dato che lavora per automatic forse avrà già in mente cosa sia un contesto valido per WordPress URL così da esculedere la cartella web quando non necessaria.

    Grazie ma forse mi sono spiegato male.

    Si può fare un file index.php
    {tuosito}/web/index.php
    dove index.php :

    <?php
    header('HTTP/1.1 301 Moved Permanently');
    header( "Location: http://{tuosito}/" );
    exit();

    index.php parte facendo tuosito/web/
    Può andare?

    P.S. si può fare anche un index.html con un redirect da javascript o addirittura da html.

    Chi ha creato la discussione andreamarucci

    (@shiftsrl)

    Non posso Luca. Dentro in web c’è il sito WP quindi index.php. Se lo redireziono non funziona più nulla.

    site_url visualizzazione sito mentre home_url si riferisce ai file di dove risiedono (il core, suppongo anche i caricament e i post).
    Siccome lavori con plug-in a pagamento devi essere sicuro (nonché tuo diritto) su come effettua questi cambiamenti.
    Normalmente esistono due metodi, uno che modifica .htaccess e l’altro site_url cito i passaggi 7,8,9,10,11.
    7 della guida seguente “COPIA NON SPOSTA” dalla directory di WordPress nella directory principale del tuo sito (visualizzazione sito).
    8 apri la tua directory root index.php
    9 modifica require( dirname( __FILE__ ) . '/wp-blog-header.php' ) in require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' ).
    10 fai il login
    11 clicca su save i permalink.
    *Nota la guida fa riferimento a un spostamento su una cartella wordpress /wordpress/wp-blog-heder.php sarà inserito nel file root (poiché site_url é impostato nella root e home_url spostato nella cartella wordpress “quasi” come nel tuo caso).

    https://wordpress.org/support/article/giving-wordpress-its-own-directory/
    Detto questo significa che i plug-in da te utilizzati fanno questo cambiamento (se rispecchiano il core WordPress, in tanti elaborano i propri codici php ma difficilmente sono basati sul tutto il core WordPress).

    Puoi postare il tuo file .htaccess senza htpassword o comunque senza informazioni personali, il require della root per il file index.php?
    Mi dispiace WordPress non definisce chiaramente cosa sia site_url , a limite ti crei un plugin e usi la funzione per recuperare il site_url e se non ti piace fai un redirect.

    Questo é un argomento avanzato e ti può rispondere solo chi sviluppa con WordPress.

    Dunque dentro /web/ c’è un sacco di roba che viene anche adoperata.
    Però “tuosito/web/” deve essere rediretto a “tuosito/”
    Beh, index.html viene di solito eseguito prima di index.php.
    Prova a redirigere con quello. Metatag html:
    <meta http-equiv="refresh" content="0; URL='http://tuosito.com'" />.
    Ti perdi il 301 in questo modo.
    Comunque non capisco perché mettere un sito sotto /web.
    Esistono i sottodomini, sono così comodi . . .

    Se non utilizza il primo metodo (redirect alla cartella web tramite .htaccess)
    Dunque utilizzerà il secondo metodo impostazione url e copia .htaccess e index.php nella root di conseguenza si può stilare la prima regola per il file index.php nella cartella web dunque ecco una pseudocodice regex
    ^/?web/?(index\.php)?(.*)$ index.php$2
    dovrebbe anche essere valida per htaccess non l’ho testata.
    Significa se é con percorso iniziale con o senza slash iniziale su web e/o con o senza slash finale su web o seguito dal file index.php e/o con o senza altri caratteri.

Stai visualizzando 11 risposte - dal 1 al 11 (di 11 totali)
  • Il topic ‘WordPress in sottodirectory’ è chiuso a nuove risposte.