Cum să folosești WordPress Multisite cu nume de domenii diferite?

3 ian. 2017, 13:30:30
Vizualizări: 55K
Voturi: 36

Vreau să lucrez cu WordPress multisite, dar vreau să pot folosi propriile mele nume. De exemplu, site-ul meu principal se numește example.com. Dacă vreau să adaug un site nou în rețeaua mea multisite, acesta va fi numit newsite.example.com. Vreau să fie newsite.com fără example. Există o modalitate de a realiza acest lucru?

Am auzit despre maparea domeniilor cu un plugin, dar nu știu dacă este relevant pentru această întrebare. Dacă este relevant, aș dori să știu exact ce înseamnă acest lucru.

1
Comentarii

Este posibil să fie util de menționat că pentru a face acest lucru fără un plugin, va trebui să ai un IP dedicat, cel puțin așa am înțeles eu.

Neal Jones Neal Jones
10 feb. 2017 18:52:36
Toate răspunsurile la întrebare 3
3
35

Există întotdeauna o oarecare confuzie pe acest subiect. Poate că WordPress ar putea face o treabă mai bună în a-și ghida utilizatorii în acest proces. Deși, presupun că Multi-site nu a fost conceput să fie utilizat pentru domenii de nivel superior (TLD).

Deci, în primul rând, aș instala WordPress, configura multi-site și l-aș configura ca o rețea bazată pe subdomenii.

Iată o configurație exemplu pentru fișierul tău wp-config.php din directorul de bază al instalării WordPress:

/* Multi-site */
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'www.primary-domain.example' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Apoi, iată configurația de bază pentru fișierul tău .htaccess ca o configurație cu subdomenii, în directorul de bază al instalării WordPress:

# BoF WordPress

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

# adaugă o bară oblică la final pentru /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]

# EoF WordPress

Acum, pentru a face ca domeniile de nivel superior (TLD) să funcționeze corect, a trebuit să fac niște configurații suplimentare la fișierul wp-config.php astfel:

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

Acestea sunt toate configurațiile specifice WordPress.

Personal, îmi place să am un singur Virtual Host Apache pentru domeniul principal din rețea și apoi să configurez acel virtual host cu domenii alias. Fiecare domeniu alias reprezentând unul dintre site-urile adiționale din rețeaua ta.

Indiferent cum ajustezi în final configurația, ai nevoie ca DNS-ul fiecărui domeniu să se rezolve către același server web, iar fiecare domeniu să fie direcționat către același director în care este instalat WordPress pentru domeniul principal. Fiecare domeniu din rețeaua ta trebuie să puncteze către același server web prin înregistrări DNS și să partajeze același cale a directorului pentru fișierele utilizate de WordPress.

Odată ce ai configurat totul corect conform celor discutate mai sus, conectează-te în zona de administrare WordPress și navighează în zona de administrare a rețelei pentru a adăuga un nou site în rețeaua ta.

Când vei adăuga un site, sistemul te va obliga să-l adaugi ca și cum ar fi un subdomeniu al domeniului tău principal. Continuă așa. Introdu ceva temporar.

Odată ce site-ul a fost adăugat, găsește-l în lista de site-uri din rețeaua ta. Apasă pe editare pentru acel site specific. Acum, poți schimba 100% numele de domeniu al acelui site. Atunci vei pune numele real de domeniu pentru acest site TLD.

Știu că este un pic de magie să faci astfel, dar funcționează și nu ai nevoie să folosești niciun plugin.

3 ian. 2017 16:38:45
Comentarii

Mulțumesc pentru asta, pare să funcționeze - și chiar părea că are nevoie de partea cu cookie-ul. Pentru mine, am 1) înregistrat un nou domeniu, 2) am direcționat nameserver-ile către gazda mea existentă de WordPress Multisite, 3) în cPanel, am adăugat un domeniu Add-On, setând rădăcina documentelor la același public_html ca site-ul principal (cum ai spus; nu am încercat varianta implicită, cu un director nou, așa că nu sunt sigur dacă ar funcționa), și 4) am schimbat URL-ul subsite-ului de la http://oldsubdomain.primarysite.com la http://www.newdomain.com. Și până acum, fără probleme DNS.

Robert Andrews Robert Andrews
6 oct. 2018 23:39:10

Iubesc acest răspuns...dar am o problemă. Sugestia ta de a modifica .htaccess, la fel cum a sugerat și WordPress, când fac această modificare, sistemul se blochează. Ai vreo idee de ce s-ar întâmpla asta?

Debbie Kurth Debbie Kurth
26 iun. 2019 05:07:28

Și mie îmi place să fac asta în acest fel. Există riscul ca site-urile să se corupe de fiecare dată când WordPress se actualizează?

Jornes Jornes
17 mar. 2021 17:27:04
1

WordPress are acum un articol de suport pe această temă. În esență, pașii recomandați sunt cei prezentați de David și Michael:

  1. Mapează numele de domeniu în DNS către serverul tău
  2. Asigură-te că acest domeniu este înregistrat pe serverul tău cu un gazdă virtuală care indică spre directorul WordPress
  3. Generează și instalează un certificat SSL pe serverul tău care include domeniul dorit (din punct de vedere tehnic, acest pas este opțional, dar restricționarea utilizatorilor la HTTP nu este o idee bună și este acum penalizată în mod regulat cu scoruri SEO scăzute)
  4. Actualizează URL-ul site-ului în blogul tău WordPress pentru a indica spre noul domeniu
  5. Dacă problemele cu cookie-urile persistă, definește COOKIE_DOMAIN în wp-config.php.

Diferența principală este că în loc să lași domeniul cookie-urilor gol (define( 'COOKIE_DOMAIN', '' );), ei recomandă să completezi domeniul către care a fost trimisă cererea HTTP:

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

Aceasta ajută la evitarea problemelor cu cookie-urile în instalările multisite sub diferite nume de domeniu, în special pentru instalările în subdirectoare.

26 feb. 2020 11:27:40
Comentarii

Care este diferența dintre modificarea ADMIN_COOKIE_PATH, COOKIEPATH și SITECOOKIEPATH prin șirul gol așa cum a făcut Michael? Și folosirea $_SERVER['HTTP_HOST'] în loc de șir gol pentru COOKIE_DOMAIN? Nu este vulnerabil la injecție de antet HTTP Host? Doar modificarea COOKIE_DOMAIN a funcționat pentru mine și singura diferență pe care am observat-o este că $_SERVER['HTTP_HOST'] va seta domeniul cookie-ului la .subdomain.domain.tld în loc de subdomain.domain.tld (ceea ce ar trebui să fie util doar dacă avem un alt nivel de subdomeniu).

baptx baptx
7 apr. 2021 14:26:30
0

Această funcționalitate a fost implementată fără a fi nevoie de un plugin acum câteva versiuni (nu-mi amintesc versiunea exactă, dar această caracteristică există de ceva timp). Cu toate acestea, dacă începeți de la zero, ar trebui să instalați WordPress multisite în modul subdomeniu.

Trebuie să declarați un URL principal (probabil kevin123.example) ca URL principal pentru rețea (multisite). Acesta este stocat în wp-config.php în constanta DOMAIN_CURRENT_SITE, iar site-ul (cunoscut anterior ca »blog«) care folosește acest domeniu ca URL de bază trebuie să aibă ID-ul stocat în BLOG_ID_CURRENT_SITE. Dar acestea sunt setări destul de standard în procesul de instalare obișnuit.

WordPress vă permite să specificați doar subdomeniul când creați un site nou. Dar după ce site-ul este creat, îl puteți edita și puteți adăuga o valoare complet arbitrară pentru URL-ul site-ului. Am descris acest lucru acum ceva timp în acest răspuns, cu câteva capturi de ecran: Sunt posibile subdomenii imbricate într-un multisite cu subdomenii?

De asemenea, s-ar putea să fie nevoie să setați constanta COOKIE_DOMAN la o valoare goală în wp-config.php:

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