WebToDate/Extenze/Extenze pro zamezení zobrazování zpráv na jiných virtuálních serverech
Funkcionalita
Pokud je ve WebToDate nakonfigurována podpora více virtuálních serverů, lze jednu stejnou zprávu standardně zobrazovat na všech virtuálních serverech. To může být záměr, kdy jeden obsah chceme použít na různých virtuálních serverech, nebo to může být nežádoucí efekt. V každém případě standardně platí, že pokud je funkční URL typu http://www.server1.cz/scripts/detail.php?id=xxx, je funkční i URL http://www.server2.cz/scripts/detail.php?id=xxx, kde server1 a server2 jsou virtuální servery v rámci jedné instalace WebToDate a xxx je ID existující zprávy v této instalaci.
Aby bylo možné tomuto jevu zamezit, je k dispozici tato extenze. Funkce extenze vychází z toho, že v běžné implementaci obsahu více virtuálních serverů, které nesdílejí společný obsah, je strom kategorií rozdělen dle těchto virtuálních serverů a každému takovému serveru odpovídá jedna kategorie nejvyšší úrovně včetně vnořených kategorií. Extenze tedy při zobrazení každé zprávy resp. dynamickém zobrazení stránky kontroluje její umístění ve stromu kategorií. Dohledá nadřazenou kategorii nejvyšší úrovně a tento údaj porovná s mapováním kategorií na virtuální servery ve svém konfiguračním souboru. Je-li zjištěno, že kategorie virtuálnímu serveru odpovídá, je zpráva resp. stránka zobrazena. Pokud kategorie neodpovídá, jsou dle konfigurace extenze dvě možnosti:
- Buď extenze vyvolá chybovou stránku
- Nebo extenze přesměruje na stejné URL, ale na správném virtuálním serveru namapovaném na danou kategorii nejvyšší úrovně.
Instalace
Do souboru config/_preprocess_inc.php vložte následující kód:
// - extenze vservers
$arrModules[] = 'vservers/_vservers_check.php';
Ujistěte se, že v instalaci WebToDate existuje soubor /scripts/modules/ vservers/_vservers_check.php. přejmenujte v tomto adresáři soubor config.release.php na config.php (pokud ještě tento soubor neexistuje) a definujte v ní hodnoty proměnné $_server_webs a konstanty VSRW_REDIRECT_404.
Reference
Konfigurace
V konfiguračním souboru config.php se vyplní pole $_server_webs. Pole obsahuje mapování kategorií nejvyšší úrovně na virtuální servery, tedy např. array(15 => 2), kde 15 je ID kategorie, 2 je ID serveru (zjistí se v databázi v tabulce NEWSSERVER).
Do proměnné $_default_server_URL se zadá URL výchozího serveru. Zadává se adresa bez lomítka na konci, tedy např. hodnota http://www.server.cz.
Dále se v konstantě VSRW_REDIRECT_404 zvolí, zda se po zjištění, že zpráva je zobrazována na nesprávném virtuálním serveru přesměrovává na chybovou stránku (vyvolá se http chyba 404 Not Found) nebo je uživatel přesměrován na stejnou zprávu na správném virtuálním serveru.
Funkce extenze
Extenze kontroluje zobrazování všech zpráv a zdrojů (URL typu /scripts/detail.php?id=xxx) a stránek zobrazovaných dynamicky (URL typu /scripts/detail.php?pgid=xxx).