Come gestire WordPress su localhost

4 mag 2015, 22:16:16
Visualizzazioni: 17.9K
Voti: 8

Sto eseguendo un sito WordPress sul mio laptop utilizzando localhost e spesso ho bisogno che i miei colleghi possano vederlo. Se inseriscono l'IP di casa mia, erano in grado di accedere al sito, ma tutti gli URL in WordPress che utilizzavano site_url() o simili restituivano "localhost", il che ovviamente non funzionava per gli esterni.

Quindi ho modificato WordPress per utilizzare il mio IP come URL del sito, risolvendo quel problema, ma ne ho creato un altro. Se porto il mio laptop fuori casa e provo a visualizzare il mio sito, ora tutti i link appaiono come http://home-ip/ che non è disponibile. Inoltre, non riesco ad accedere a wp-admin per cambiare l'URL del sito tornando a localhost perché vengo reindirizzato a http://home-ip/site/wp-admin/.

Esiste un modo per gestire questo problema senza dover cambiare costantemente l'URL ogni volta che voglio che qualcun altro vi acceda dall'esterno o ogni volta che esco di casa?

0
Tutte le risposte alla domanda 3
2
10

Puoi utilizzare wp-config.php per modificare l'URL del sito in base al punto di accesso, usando $_SERVER['REMOTE_ADDR']. Il mio file contiene qualcosa del genere:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') { 
    // accesso al sito dal mio server locale
    define('WP_SITEURL', 'http://localhost/miosito/');
    define('WP_HOME', 'http://localhost/miosito');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
    // accesso al sito da un'altra macchina nella mia rete domestica, 
    // tutti i loro indirizzi (interni) di rete iniziano con questo numero;
    // la riga seguente fornisce l'indirizzo di rete interno del server 
    define('WP_SITEURL', 'http://192.168.0.192/miosito/');
    define('WP_HOME', 'http://192.168.0.192/miosito');
} else { //accesso al sito dall'esterno della rete domestica
    define('WP_SITEURL', 'http://89.*.*.*/miosito/'); //sostituisci con il tuo IP pubblico
    define('WP_HOME', 'http://89.*.*.*/miosito');
}
//error_log("L'URL del sito è ".WP_SITEURL);

Questa tecnica aiuta molto anche a semplificare il caricamento del sito su un server di produzione o a mantenere sincronizzate le versioni locali e di produzione del sito. (Ovviamente, il file wp-config.php sul server di produzione non dovrebbe contenere questo codice.)

Nota: Per qualche motivo, non posso utilizzare il mio IP pubblico da altre macchine nella mia rete domestica; se questo non è il tuo caso, puoi rimuovere la parte else if, lasciando solo la parte else.

5 mag 2015 00:06:58
Commenti

Grazie, questo ha funzionato per me. Tuttavia ho dovuto aggiungere un || $_SERVER['REMOTE_ADDR'] == '::1'

user1778856 user1778856
5 mag 2015 02:09:56

Interessante, non lo sapevo, ma una rapida ricerca mi dice che "::1 è l'indirizzo di loopback in IPv6. Pensa a questo come alla versione IPv6 di 127.0.0.1". Ho modificato la risposta per includerlo.

adelval adelval
5 mag 2015 02:40:18
0

Anche se la risposta accettata sembra essere buona, semplicemente cambiare WP_SITEURL/WP_HOME non funziona nel mio caso perché alla fine ci sono sempre molti link assoluti nel contenuto testuale delle pagine (ad esempio immagini o link aggiunti tramite l'editor WYSIWYG). In altre parole, praticamente devo usare lo stesso dominio se voglio che il sito funzioni correttamente.

Quindi, nel caso possa aiutare qualcun altro che si imbatte in questo, la mia soluzione è stata esterna a WordPress - anche se potrebbe non essere utile in tutti i casi.

Uso un dominio, ad esempio me.mycompany.com, e poi nel mio file HOSTS lo faccio risolvere a 127.0.0.1 (in altre parole, localhost). Per qualsiasi mio collega che ha bisogno di visualizzare il sito, aggiungo il mio dominio al loro file HOSTS con il mio IP locale.

Questa soluzione si estende anche quando clienti esterni alla nostra rete devono visualizzare il sito; ci assicuriamo semplicemente che me.mycompany.com risolva al nostro IP pubblico (di solito il tuo web host può aiutarti con questo, e aiuta sicuramente se hai anche un IP statico per la tua connessione Internet), e poi al nostro router, instradiamo le richieste web al mio IP interno, configurando effettivamente una soluzione di hosting web semplice (solo per sviluppo, ovviamente, non per la produzione!).

Spero che questo aiuti qualcuno. Il file HOSTS può essere modificato su qualsiasi piattaforma, ovviamente le istruzioni differiscono per Windows, Mac e Linux quindi è meglio che tu cerchi su Google se hai bisogno di aiuto, ma in Windows il file si trova in C:\Windows\System32\drivers\etc\hosts - aprilo con Notepad e apporta le modifiche necessarie, seguendo il formato del file (dovrai eseguire come Amministratore per poter salvare il file).

5 mag 2015 02:45:13
0

Da WordPress 5.5.1 puoi utilizzare la funzione wp_get_environment_type. Imposta wp_get_environment_type all'interno di wp-config.

21 mar 2021 14:45:18