Come utilizzare WordPress Multisite con nomi di dominio diversi?

3 gen 2017, 13:30:30
Visualizzazioni: 55K
Voti: 36

Voglio lavorare con WordPress multisite, ma voglio poter utilizzare i miei propri nomi. Per esempio, il mio sito principale si chiama example.com. Se voglio aggiungere un nuovo sito alla mia rete multisite, questo verrebbe chiamato newsite.example.com. Vorrei invece che fosse newsite.com senza example. C'è un modo per ottenere questo risultato?

Ho sentito parlare del domain mapping tramite plugin, ma non so se questo sia rilevante per questa domanda. Se lo è, mi piacerebbe sapere esattamente di cosa si tratta.

1
Commenti

Vale la pena notare che per farlo senza un plugin sarà necessario avere un IP dedicato, almeno questa è stata la mia comprensione.

Neal Jones Neal Jones
10 feb 2017 18:52:36
Tutte le risposte alla domanda 3
3
35

Sembra che ci sia sempre un po' di confusione su questo argomento. Forse WordPress potrebbe fare un lavoro migliore nel guidare i suoi utenti in questo processo. Anche se, suppongo che il Multisito non fosse pensato per essere utilizzato con TLD.

Quindi, prima di tutto, installerei WordPress, configurerei il multisito e lo imposterei come una configurazione di rete con sottodomini.

Ecco una configurazione di esempio per il tuo file wp-config.php nella directory principale della tua installazione WordPress:

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'www.dominio-principale.esempio' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Poi, ecco la configurazione base per il tuo file .htaccess come configurazione con sottodomini, nella directory principale della tua installazione WordPress:

# Inizio WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# aggiungi una barra finale a /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

# Fine WordPress

Ora, per far funzionare correttamente i TLD, ho dovuto apportare alcune configurazioni aggiuntive al file wp-config.php in questo modo:

define( 'COOKIE_DOMAIN', '' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );

Questo è tutto per le configurazioni specifiche di WordPress.

Personalmente, mi piace avere un Virtual Host Apache per il dominio principale nella rete e poi configurare quel virtual host con domini alias. Ogni dominio alias sarà uno dei siti aggiuntivi nella tua rete.

Indipendentemente da come deciderai di modificare il tuo setup, hai bisogno che il DNS di ogni dominio si risolva nello stesso web server e che ogni dominio punti alla stessa directory in cui è installato WordPress con il dominio principale. Ogni dominio nella tua rete deve puntare allo stesso web server con i record DNS e condividere lo stesso percorso della directory per i file utilizzati da WordPress.

Una volta che hai configurato e impostato tutto correttamente come discusso sopra. Accedi alla tua area di amministrazione WordPress e naviga nell'area di amministrazione della rete per aggiungere un nuovo sito nella tua rete.

Quando vai ad aggiungere un sito, ti obbligherà ad aggiungere il sito come se fosse un sottodominio del tuo dominio principale. Va bene così. Inserisci qualcosa di temporaneo.

Una volta che il sito è stato aggiunto, trovalo nell'elenco dei siti nella tua rete. Clicca su modifica per quel sito specifico. Ora puoi cambiare completamente al 100% il nome del dominio di quel sito web. È allora che inserirai il nome di dominio effettivo per questo sito TLD.

So che è un po' un trucchetto farlo in questo modo, ma funziona e non hai bisogno di usare alcun plugin.

3 gen 2017 16:38:45
Commenti

Grazie per questo, sembra funzionare - e sembrava davvero necessaria la parte relativa ai cookie. Nel mio caso ho: 1) registrato un nuovo dominio, 2) puntato i suoi nameserver verso il mio host WordPress Multisite esistente, 3) in cPanel, ho aggiunto un dominio Add-On, impostando la root dei documenti come lo stesso public_html del sito principale (come hai suggerito; non ho provato il modo predefinito con una nuova directory, quindi non so se avrebbe funzionato), e 4) ho cambiato l'URL del sottosito da http://oldsubdomain.primarysite.com a http://www.newdomain.com. Incrociamo le dita, finora nessun problema con il DNS.

Robert Andrews Robert Andrews
6 ott 2018 23:39:10

Adoro questa risposta...ma ho un problema. Il tuo suggerimento per modificare il file .htaccess coincide con quello fornito da WordPress. Quando apporto questa modifica, il sistema va in crash. Hai idea del perché succeda?

Debbie Kurth Debbie Kurth
26 giu 2019 05:07:28

Anche a me piace procedere in questo modo. C'è il rischio che i siti si corrompano ad ogni aggiornamento di WordPress?

Jornes Jornes
17 mar 2021 17:27:04
1

WordPress ora ha un articolo di supporto su questo argomento. In sostanza, i passaggi consigliati sono quelli delineati da David e Michael:

  1. Mappare il nome del dominio nel DNS al tuo server
  2. Assicurarsi che questo dominio sia registrato sul tuo server con un host virtuale che punti alla directory di WordPress
  3. Generare e installare un certificato SSL sul tuo server che includa il dominio desiderato (tecnicamente questo è opzionale, ma limitare gli utenti a HTTP non è una buona idea e ora viene regolarmente penalizzato con punteggi SEO scarsi)
  4. Aggiornare l'URL del sito nel tuo blog WordPress per puntare al nuovo dominio
  5. Se persistono problemi con i cookie, definire COOKIE_DOMAIN in wp-config.php

La differenza principale è che invece di lasciare vuoto il dominio del cookie (define( 'COOKIE_DOMAIN', '' );), consigliano di inserire il dominio a cui è stata inviata la richiesta HTTP:

define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);

Questo aiuta a evitare problemi con i cookie nelle installazioni multisito sotto diversi nomi di dominio, specialmente per le installazioni in sottodirectory.

26 feb 2020 11:27:40
Commenti

Qual è la differenza tra cambiare ADMIN_COOKIE_PATH, COOKIEPATH e SITECOOKIEPATH con una stringa vuota come fatto da Michael? E usare $_SERVER['HTTP_HOST'] invece di una stringa vuota per COOKIE_DOMAIN? Non è vulnerabile all'injection dell'header HTTP Host? Solo cambiare COOKIE_DOMAIN ha funzionato per me e l'unica differenza che ho notato è che $_SERVER['HTTP_HOST'] imposterà il dominio del cookie a .subdomain.domain.tld invece di subdomain.domain.tld (il che dovrebbe essere utile solo se abbiamo un altro livello di sottodominio).

baptx baptx
7 apr 2021 14:26:30
0

È stato reso possibile senza utilizzare un plugin già da alcune versioni fa (non ricordo la versione esatta ma la funzionalità è presente da un po' di tempo). Tuttavia, se parti da zero, dovresti installare WordPress multisite in modalità sottodominio.

Devi dichiarare un URL principale (probabilmente kevin123.example) come URL principale della rete (multisite). Questo viene memorizzato in wp-config.php nella costante DOMAIN_CURRENT_SITE e il sito (precedentemente chiamato »blog«) che utilizza questo dominio come URL home deve avere l'ID memorizzato in BLOG_ID_CURRENT_SITE. Ma questa è praticamente la configurazione predefinita durante il processo di installazione standard.

WordPress ti consente di specificare solo il sottodominio quando crei un nuovo sito. Ma dopo che il sito è stato creato, puoi modificarlo e aggiungere un valore completamente arbitrario per l'URL del sito. L'ho descritto qualche tempo fa in questa risposta con alcuni screenshot: I sottodomini nidificati sono possibili con un multisite a sottodominio?

Potresti anche aver bisogno di impostare la costante COOKIE_DOMAN su un valore vuoto nel tuo wp-config.php:

define( 'COOKIE_DOMAIN', '' );
3 gen 2017 13:48:26