Posts Tagged ‘Wordpress’

Pro svůj nový projekt infosit.cz a staronový projekt o dárcích darem.info jsem se rozhodl vytvořit systém pro vytváření webů na jednotlivých subdoménách. Po nějaké době jsem zjistil, že je možné aktivovat takový systém přímo ve wordpressu od verze 3.0. V tomto článku popíšu jak na to a s jakými problémy jsem se setkal.

Ze všeho nejdřív je nutné otevřít soubor wp-config.php a napsat do něj nový parametr:

define('WP_ALLOW_MULTISITE', true);

Po té se v administraci wordpressu v části nástroje zobrazí nová položka „Síť webů“. Po kliknutí se nám zobrazí možnosti, jestli chceme vytvořit síť jako subdomény nebo jako podadresáře. Dále název sítě a administrátorský email. V našem případě si zvolíme sítě na subdoméně. A název zvolíme infosíť.

Stránka s nastavením sítě webů

Stránka s nastavením sítě webů

Po kliknutí na „instalovat“ se síť nainstaluje a vypíšou se další požadavky, které se musí splnit, jinak síť nebude funkční.

  1. Vytvořit soubor blogs.dir v adresáři wp-content
  2. Upravit soubor wp-config.php
  3. Upravit soubor .htaccess

Jak soubory upravit je popsáno na stránce, která se zobrazí po instalaci.

Stránka po instalaci sítě

Stránka po instalaci sítě

Zásadní problém nastává, když web není umístěn v kořeni webu, tak jak wordpress předpokládá, ale používáte mod_rewrite k podstrčení adresáře s wordpressem. V takovém případě budou tyto úpravy špatné a wordpressová síť nebude fungovat.

Jak to změnit?

V dalším textu budu předpokládat správné nastavení .htaccess v nadřazených adresářích, tak že wordpress bude zobrazen na adrese infosit.cz a taky na všech subdoménách *.infosit.cz.

Soubor .htaccess je vygenerován špatně protože wordpress jej generoval jakoby se nacházel v podadresáři, ale my jej zobrazujeme jako hlavní doménu a síť chceme na subdoménách. Proto jej upravíme následovně:

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

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]

Jediné co se změní, bude položka RewriteBase.

V dalším kroku musíme změnit soubor wp-config. Stejně jako v předchozím případě změna spočívá pouze v odstranění nadbytečné cesty k instalaci wordpressu.

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true);
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'www.infosit.cz' );
define( 'PATH_CURRENT_SITE', '/');
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Položka administrace webů

Položka administrace webů

Tento kód pak přidáme do souboru wp-config.php.

Po té co všechno uložíte, můžete obnovit stránku a budete vyzváni k novému přihlášení. Když ale kliknete na možnost administrace webů (vpravo nahoře u uživatelského účtu), budete nemile překvapení, protože web se vám nejspíš zacyklí.

K tomu aby vše fungovalo na 100% je nutná poslední úprava v databázi. Přihlásime se do phpMyAdmina a vybereme databázi s WordPressem. Najdeme tabulku wp_blogs, kterou si zobrazíme.

Položka blogu v wp_blogs

Položka blogu v wp_blogs

Ve sloupci patch je opět přebytečná cesta, kterou je třeba odstranit. Klikneme na „upravit“ a v kolonce patch ponecháme pouze lomítko „/“, zbytek odstraníme.

Editace položky patch

Editace položky patch

Kliknutím na tlačítko proveď, uložíme změny. Nyní by už síť měla běžet naprosto bez problémů, proto Vám přeji hodně štěstí při vytváření nových a zajímavých webů.

V případě, že máte wordpress v kořeni webu, pak tento návod nebudete potřebovat. Já jsem se s tímto problémem setkal na hostingu wedos, kdy web není v kořeni webu, ale je vždy podstrčen pomocí htaccess. Samozřejmě že je možné web nahrát přímo do kořene a používat jej tam v tom je hosting wedos upravdu univerzální ale mi vyhovuje právě to podstrkávání, protože tak mám mnohem volnější ruku při vytváření subdomén nebo aliasů.

Jak aktivovat síť webů přímo na stránkách wordpressu můžete najít zde.