Pokud provozujete více webů, které mají něco společného, pak byste měli znát režim multisite. Česky se mu říká síť webů. Za určitých okolností přináší velké výhody a taky pár nevýhod. S multisitem aktivně pracuji mnoho let, takže celkem vím, o čem mluvím.
Nejdřív si přečtěte článek WordPress multisite na webu Co umí WordPress, kde jsou vysvětlené základy. Jasně, mohl jsem to prohnat přes GPT a nechat to sem přepsat, ale přijde mi to zbytečné. Dále píšu o věcech, které v článku nejsou.
Kdy se multisite hodí a kdy nehodí
Předně – multisite má přínos pouze tehdy, pokud jsou splněny aspoň některé z následujících okolností nebo podmínek:
- webů je několik, alespoň tak tři čtyři; pracujeme i s multisity, které mají dva weby, ale – v prázdném sále to tak nezní 😉
- weby už mají něco společného, např. jeden design s drobnými odchylkami nebo uživatele,
- weby mají mít něco společného, např. konfiguraci, tzn. smyslem je ušetřit čas a energii věnovanou správě a údržbě
Co by vám pak nemělo vadit:
- speciální funkce pro multisite podporuje pouze malá část pluginů, většina pluginů funguje v rámci jednotlivých webů a neví o tom, že ten web je součástí sítě,
- některé exportní, importní, zálohovací a jiné technickopodpůrné pluginy multisite nepodporují nebo takový doplněk stojí celkem dost peněz,
- multisite se obtížně migrují (ale jde to, jen musíte vědět, co děláte),
- není pouze jedna varianta, jak multisite provozovat, jde o celkem komplexní a složitý systém, který může fungovat v různých konfiguracích,
- pluginy se zapínají na úrovni webu, pokud nepodporují režim sítě, tzn. je nutný ruční zásah na daném webu,
- jeden plugin může v síti existovat pouze jednou, tzn. nelze ho v síti ladit, protože jeho nefunkčnost ohrozí všechny weby, které ho používají
Problémy z praxe
Uvedu tady problémy a situace, na které jsem narazil nebo si je sám vytvořil 🙂 A samozřejmě pak i opravil. Nesouvisejí s tím, že by multisite nefungoval, jak má, ale vždy s tím, že jsem na něco zapomněl nebo si neuvědomil určitou souvislost.
Doména pro hlavní web
Pokud chcete mít jednotlivé weby na subdoménách, třeba jonatan.wp-admin.cz a mach.wp-admin.cz, pak potřebujete mít k dispozici hlavní doménu wp-admin.cz.
Nestačí mít třeba admin.wp-admin.cz a myslet si, že tím vytvoříte administraci celé sítě.
Důvodem je to, že cookies, které jsou potřeba, platí pro jednu doménu a není možné je používat pro jinou, to je typický pokud o cross site scripting (XSS), což vám žádný prohlížeč nedovolí. Je to logické – cookie nemůže autorizovat přístup k jiné doméně.
Tohle je potřeba vědět už na začátku, protože po instalaci se to špatně předělává.
Cyklické přesměrování na registraci
Pokud vás hotový multisite pořád přesměrovává na registrační stránku (too many redirects), místo aby vás nechal přihlásit na web, pak máte špatně
- buď nastavení .htaccess nebo nginx.conf,
- nebo cesty pro jednotlivé weby, obvykle po migraci – chyba v databázových tabulkách
Certifikáty a aliasy
Na každém hostingu to bývá trochu jinak. Pokud nemají přímou podporu pro multisite v obslužné aplikaci (neznám český hosting, který by to měl, ale neznám všechny), pak je potřeba žádat podporu o nastavení.
Sdělte jim, že jde WordPress multisite na (sub)doménách (v opačném případě, tedy při instalaci do adresářů, byste jejich pomoc neměli potřebovat). Většinou operátor podpory vytváří aliasy na subdomény,
- tzn. symlinky nebo adresáře směřující na hlavní adresář instalace, nebo
- nastavují alias v konfiguraci webového serveru
Podstatné je, že musíte uvést, které domény druhé ho řádu mají do certifikátu zahrnout. Subdomény se pokryjí divokou kartou (wildcard, hvězdička *), tam problém není. V jednom multisitu můžete mít weby na doménách druhého (.cz) i třetího (subodmény) řádu.
Správná doména pro web – domain mapping
Jakmile máte funkční certifikáty a https, změňte homeurl webů na cílovou URL. Teprve pak začněte vkládat nebo importovat data do webů.
Jinak tam budete mít cesty jako např. xttps://mach.wp-admin.cz/ (pokud jste na subdoméně) nebo xttps://wp-admin.cz/mach/ (pokud jste instalovali do adresářů), chcete tam ale třeba mít xttps://bigmach.cz.
Nejde o přesměrování – adresy jsou přímo uvedeny v databázi, což je žádoucí. Nechceme přidávat přesměrování, když není potřeba – proto k tomu ani nepoužívejte žádný plugin.
Odesílání e-mailů a přístup uživatelů
Pokud není web v multisitu hotový (web není zveřejněný) a veřejně přístupný, tzn. běží v servisním režimu nějakého pluginu, pak se při registraci obvykle neodesílají transakční e-maily novému uživateli.
Pokud byste uživateli poslali přímo na URL pro přihlášení, nebude se moct přihlásit, protože nepotvrdil registraci v e-mailu (který mu nedorazil). Takže je dobré netrvat na odeslání e-mailů, pokud chcete pozvat uživatele do rozpracovaného webu.
Taktéž platí, že uživatele je vhodné přidávat na úrovni daného webu, kde mu lze nastavit konkrétní práva. V uživatelském jméně smí být pouze písmena a čísla – na rozdíl od klasické single instalace, kde může být např. tečka. Ta zde být nesmí, jména jsou sdílená pro celý multisite, což bude asi důvod.
Databázové tabulky pro multisite
Sada tabulek se vytváří pro každý web v síti. Každá sada má předponu s číslem webu (toto číslo se třeba také objevuje v cestě k obrázkům). Z core tabulek jde o tyto: comments, commentmeta, links, options, posts, postmeta, terms, termmeta, term_relationships, term_taxonomy.
Pak už jsou zde tabulky pluginů pro daný web. Toto je konfigurace jednotlivých webů v síti.
Pluginy pracující v celé síti mají tabulky pouze v hlavní sadě, tj. bez číselné předpony (viz příklad na obrázku, kde jde o fialový rámeček dole).
Celkové nastavení multisitu je uloženo v následujících tabulkách (dataset bez číselné předpony):
- wp_blogs – adresy jednotlivých webů v síti
- wp_site – adresa řídicího webu multisitu, tj síťové administrace
- wp_sitemeta – nastavení multisitu, tj. jak se má celá síť chovat
- wp_users – uživatelé pro celou síť webů
Řídicí web může být současně obsahovým, záleží na konfiguraci URL. Pokud je multisite na wp-admin.cz a weby v síti na subdoménách, pak je v tabulkách jako wp_options, wp_posts konfigurace a obsah webu na wp-admin.cz. Ale pokud je řídicí web současně prvním webem v síti (=má shodnou url), pak má [podle všeho] přednost obsah v tabulkách wp_2_posts atp.
Multimasakr
Po pravdě to není zas tak složité, jen je kolem hodně informací. První tři multisity jsou náročné, protože konfigurace nikdy není stejná, občas nespolupracuje hosting (technika nebo lidi), občas to cyklí, občas člověk něco zapomene nastavit. Ale není to žádná magie.