Jak korzystać z Wordpress Multisite z różnymi nazwami domen?

19

Chcę pracować z wieloma witrynami WordPress, ale chcę mieć możliwość używania własnych nazw. Na przykład moja główna strona nazywa się example.com. Jeśli chcę dodać nową witrynę do mojej sieci wielostanowiskowej, zostanie ona nazwana newsite.example.com. Chcę, żeby tak było newsite.combez example. Czy istnieje sposób na osiągnięcie tego?

Słyszałem o mapowaniu domen za pomocą wtyczki, ale nie wiem, czy ma to związek z tym pytaniem. Jeśli jest to istotne, chciałbym wiedzieć, co to dokładnie jest.

Kevin.a
źródło
Warto zauważyć, że aby obejść się bez wtyczki, musisz mieć dedykowany adres IP, przynajmniej tak rozumiem.
Neal Jones

Odpowiedzi:

26

Wydaje się, że w tym temacie zawsze było trochę zamieszania. Być może WordPress mógłby lepiej poprowadzić użytkowników w tym procesie. Chociaż, przypuszczam, że Multi-site nie był przeznaczony do stosowania w TLD.

Przede wszystkim chciałbym zainstalować WordPress , skonfigurować wiele witryn i skonfigurować go jako konfigurację sieci w subdomenach.

Oto przykładowa konfiguracja wp-config.phppliku w katalogu podstawowym instalacji WordPress:

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

Oto podstawowa konfiguracja .htaccesspliku jako konfiguracji subdomeny w katalogu podstawowym instalacji WordPress:

# BoF WordPress

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

# add a trailing slash to /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

Teraz, aby TLD działały poprawnie, musiałem wykonać kilka dodatkowych konfiguracji wp-config.phppliku:

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

To wszystko w przypadku konfiguracji WordPress.

Osobiście lubię mieć jednego wirtualnego hosta Apache dla podstawowej domeny w sieci, a następnie skonfigurować ten wirtualny host z domenami aliasowymi. Każda domena aliasowa jest jedną z dodatkowych witryn w Twojej sieci.

Jednak w końcu dostrajasz konfigurację, potrzebujesz DNS każdej domeny, aby rozpoznać ten sam serwer WWW, a każda domena musi być skierowana do tego samego katalogu, w którym zainstalowana jest domena podstawowa z WordPress. Każda domena w Twojej sieci musi wskazywać ten sam serwer WWW z rekordami DNS i udostępniać tę samą ścieżkę katalogu dla plików używanych przez WordPress.

Po skonfigurowaniu i skonfigurowaniu wszystkich elementów zgodnie z powyższym opisem. Zaloguj się do obszaru administracyjnego WordPress i przejdź do obszaru administracyjnego Sieć, aby dodać nową witrynę do sieci.

Gdy przejdziesz do dodawania witryny, wymusi ona dodanie witryny tak, jakby była ona subdomeną w domenie podstawowej. Po prostu rzuć nim. Wpisz coś tymczasowego.

Po dodaniu witryny przejdź do listy witryn w sieci. Kliknij edytuj w tej konkretnej witrynie. Teraz możesz w pełni w 100% zmienić nazwę domeny tej witryny. Wtedy umieścisz rzeczywistą nazwę domeny dla tej witryny TLD.

Wiem, że zrobienie tego w ten sposób jest trochę skomplikowane, ale działa i nie trzeba używać żadnych wtyczek.

Michael Ecklund
źródło
Dzięki za to, wydaje się, że działa - i wydawało się, że potrzebuje części cookie. Dla mnie: 1) zarejestrowałem nową domenę, 2) skierowałem jej serwery nazw w kierunku mojego istniejącego hosta WordPress Multisite, 3) w cPanel, zrobiłem domenę dodatkową, ustawiając katalog główny dokumentu na taki sam public_html, jak strona główna (jak ty powiedział; nie próbowałem domyślnie nowego katalogu, więc nie jestem pewien, czy to zadziała), i 4) zmieniłem adres URL podstrony z oldsubdomain.primarysite.com na newdomain.com Palce skrzyżowane, brak problemów z DNS, więc daleko.
Robert Andrews,
Uwielbiam tę odpowiedź ... ale mam problem. Twoja sugestia zmiany .htaccess, ponieważ wordpress dał również tę samą modyfikację. kiedy dokonam tej zmiany, system ulega awarii. Wszelkie pomysły, dlaczego tak jest?
Debbie Kurth
4

Jest to możliwe bez żadnej wtyczki od czasu niektórych wydań temu (nie pamiętam konkretnej wersji, ale ta funkcja istnieje już od jakiegoś czasu). Jeśli jednak zaczynasz od zera, powinieneś zainstalować WordPress na wielu stronach w trybie poddomeny .

Musisz zadeklarować główny adres URL (prawdopodobnie kevin123.com) jako główny adres URL sieci (wielu witryn). To jest zapisane w wp-config.phpna DOMAIN_CURRENT_SITEstałym poziomie, a strony (dawniej znany jako »Blog«), stosując tę domenę jako dom URL musi mieć identyfikator zapisany w BLOG_ID_CURRENT_SITE. Ale jest to prawie domyślna rzecz podczas standardowego procesu instalacji.

WordPress pozwala tylko określić subdomenę podczas tworzenia nowej witryny. Ale po utworzeniu witryny możesz ją edytować i dodać całkowicie dowolną wartość dla adresu URL witryny. Opisałem to jakiś czas temu w tej odpowiedzi z kilkoma zrzutami ekranu: Czy zagnieżdżone subdomeny są możliwe w przypadku wielu subdomen?

Konieczne może być również ustawienie stałej COOKIE_DOMANna pustą wartość w wp-config.php:

define( 'COOKIE_DOMAIN', '' );
David
źródło