WebToDate/Referenční/URL stránek
Jaká URL WebToDate používá a vytváří
Tato kapitola obsahuje informace o tom, jak se tvoří URL www stránek v prezentační části v systému WebToDate. Tato informace je nutná v případech, kdy je třeba vytvořit nabídku odkazů či použít v těle zprávy odkaz na jinou stránku apod.
URL stránek
URL stránek definovaných v systému a zobrazovaných ve stromu stránek je zpravidla totožné s URL zadaném v poli URL stránky ve formuláři pro definici stránky. Výjimkou jsou stránky obsahující seznam nebo zprávu přiřazené dynamicky nebo stránky v privátní zóně, v tom případě je třeba použít URL ve tvaru
/scripts/detail.php?pgid=ID_stránky.
Tento prezentační skript se používá pro zobrazování stránek i zpráv, podporované parametry skriptu jsou následující:
- id – ID zprávy
- abbrev – zkratka zprávy
- pgid – ID stránky
- conn – ID instance seznamu, který se stránkuje
- pg – číslo stránky v rámci stránkování
- newsid – ID zprávy obsahující seznam typu přílohy, používá se pro fotogalerie v URL zdroje
- listid – ID zobrazovaného seznamu, používá se pro fotogalerie v URL zdroje
- returnurl – návratová adresa pro vložení odkazu zpět na stránku se zprávou, , používá se pro fotogalerie v URL zdroje
- tmplid – ID předlohy, která se má použít místo výchozí
Pro další stránku v rámci stránkování seznamu vloženého do stránky dynamicky se tedy vygeneruje tvar typu /scripts/detail.php?pgid=273&conn=5140&pg=2.
URL zpráv
URL zpráv je ve výchozí konfiguraci ve tvaru
/scripts/detail.php?id=ID_zprávy
Kromě parametru id se ještě nejčastěji používají parametry:
- abbrev – tento parametr slouží k zadání zkratky zprávy, hodnota musí korespondovat s obsahem pole Zkratka ve formuláři pro úpravu zpráv. Pokud píšete manuálně často odkaz na určitou zprávu, zadejte zkratku v poli Zkratka a použijte odkaz /scripts/detail.php?abbrev=zkratka, toto URL se lépe pamatuje než číslo zprávy přidělené systémem
- tmplid – ID předlohy, jež se má použít pro zobrazení; toto id vynucené z URL má přednost před zadáním předlohy v definici zpráv. Tuto vlastnost lze s výhodou využít pro oblíbenou funkci Verze pro tisk, či pro zobrazení stejných zpráv různě v různém kontextu (z jiné rubriky, z jiného virtuálního serveru apod.). Volání má pak tvar /scripts/detail.php?id=ID_zprávy&tmplid=ID_předlohy
URL zdrojů
Pro URL zdrojů (tj. stránek používaných pro zobrazení jednoho souboru ve zdroji v HTML kódu s popisky apod., tedy typicky pro obrázek ve fotogalerii) platí to samé co pro zprávy, navíc se dají použít parametry:
- newsid - parametrem se předává ID zprávy, ve které se zobrazuje daná fotogalerie
- listid - parametrem se předává ID seznamu, ve kterém se fotogalerie zobrazuje
- returnurl - parametrem lze předat návratovou adresu, která se použije pro návrat zpět na fotogalerii
URL souborů
Pokud se soubor nachází ve veřejné zóně, je jeho URL statické a definované ve vlastnostech souboru ve zdroji. Při vložení souboru do zdroje může dojít k jeho přejmenování, které má za cíl, aby na serveru nebyly uloženy soubory, pro které by odkazy na ně vytvářely nevalidní URL. Standardně se při tomto přejmenování postupuje následovně:
- Písmena v názvu se převádí na spodní polovinu ASCII tabulky (tedy znak č na c apod.)
- Provádí se náhrada znaků definovaných v konfiguračních konstantách URL_CONVERT_FIND, URL_CONVERT_REPLACE, URL_CONVERT_NOCHAR (viz další kapitola o možnostech generování URL zpráv)
- Znaky se volitelně převádějí na malá nebo velká písmena dle konfigurační konstanty ASSETS_FILENAME_CONVERT_CASE
- Pokud ve výsledku v názvu souboru zbudou nějaké znaky, které nejsou v URL přípustné, nahradí se znakem definovaným v konstantě ASSETS_AUTOREPAIR_FILENAMES.
V konfiguraci WebToDate lze ale zvolit i jiný přístup k eventuálnímu přejmenování souborů, viz např. konfigurační konstanta ASSETS_SET_SIMPLE_FILENAMES.
Pokud se soubor nachází v privátní zóně, je jeho URL dynamické ve tvaru /scripts/file.php?id=ID_souboru.
Dalším parametrem skriptu file.php může být parametr down. Pokud má hodnotu yes, vyznačuje se tím žádost o stažení souboru. Pokud tedy uvedeme ve stylu odkaz typu
<a href="/scripts/file.php?id=<!--WTD_ASSET(FILEID)-->&down=yes"><!--WTD_ASSET(TITLE)--></a>
klepnutím na tento odkaz se místo pokusu o zobrazení souboru v prohlížeči vyvolá dialog pro uložení souboru na disk.
Pokud parametr down není uveden nebo má jakoukoli jinou hodnotu než yes, dodatečné parametry do http hlavičky se nevkládají a soubor je odesílán do prohlížeče tak, jak je.
URL pro přesměrování
K dispozici je skript, pomocí kterého lze přesměrovat na zadané URL. Skript je umístěn na adrese /scripts/modules/redir/default.php. Jako jediný parametr má parametr trg, do kterého se vkládá cílové URL. Skript akceptuje http metody GET a POST.
Skript provádí bezpečnostní kontroly na hodnoty parametru trg a dále kontrolu na to, že se nevolá přesměrování mimo daný server (cílové URL začíná lomítkem). Pokud kontroly projdou v pořádku, přesměruje na URL dané parametrem trg, pokud kontroly v pořádku neprojdou, vyvolá se http chyba 404.
Příkladem využití může být případ, kdy chceme ve stránce zobrazit rozevírací nabídku formuláře, kde se po výběru položky z nabídky a potvrzení tlačítkem formuláře přechází na stránku danou výběrem z této nabídky. Kód formuláře je pak cca následující:
<form action="/scripts/modules/redir/default.php" method="get">
<select name="trg">
<option value="url1">Položka 1</option>
<option value="url2">Položka 2</option>
<option value="url3">Položka 3</option>
</select>
<br />
<input type="submit" value="Vyhledat" class="button" />
</form>
URL stránek modulů
Většina modulů WebToDate obsahuje svoje prezentační skripty. Např. URL stránky pro vyhledávání v databázi zpráv modulu Fulltext má tvar /scripts/modules/fulltext/fulltxt.php. Konkrétní seznamy prezentačních skriptů a jejich parametrů naleznete v příručkách k jednotlivým modulům.
Možnosti změn ve tvaru URL stránek
Techniky popsané v této kapitole slouží ke změně tvaru nativních URL zpráv či stránek v prezentační části. Cílem je dosáhnout přehlednějších a pro vyhledávače lépe přizpůsobených tvarů URL, které se zpravidla označují jako Cool URI, SEO-friendly URLs apod.
Tyto techniky vyžadují nasazení modulu www serveru Apache. mod_rewrite (podobné ISAPI moduly třetích stran existují i pro Microsoft IIS, resp. jej firma Microsoft dodává pro IIS 7).
Odkaz nadpisu využívající ID zprávy
URL zpráv mohou mít místo nativního tvaru /scripts/detail.php?id=xxx např. tvar /dokumentxxx.htm, ale i např. /zpravy/zahranicni/KLDR-a-USA-zahajily-rozhovory-o-krocich-k-normalizaci-vztahu-54253/, což je vhodnější tvar např. pro vyhledávací roboty.
Princip této funkce je následující:
- WebToDate připouští dva možné "fyzické" tvary URL zprávy - /scripts/detail.php?id=xxx (ID zprávy je automaticky přidělované celé číslo) nebo /scripts/detail.php?abbrev=yyy (parametr abbrev je obsah textového pole Zkratka ve vstupním formuláři pro zprávy, které může být definováno ručně nebo generováno automaticky, musí být unikátní v rámci celé databáze zpráv.
- Pomocí sady konfiguračních konstant se definuje, v jakém tvaru se generuje obsah pole Odkaz nadpisu nebo eventuálně Zkratka, kdy se automaticky tento obsah při uložení zprávy obnovuje a další potřebné vlastnosti, což umožňuje, aby URL zpráv byla optimální z hlediska SEO.
- Pomocí mod_rewrite se nadefinuje vhodné pravidlo, které převádí vygenerovaná URL na "fyzická" URL zpráv. Přitom pokud se ve výsledném URL může vyskytovat ID zprávy, převádí příslušné pravidlo URL na tvar /scripts/detail.php?id=xxx, pokud je požadováno, aby se číselné ID v URL nevyskytovalo a URL mělo čistě textový tvar, využívá se obsah pole Zkratka a pravidle mod_rewrite převod na tvar /scripts/detail.php?abbrev=yyy.
Z hlediska konfigurace WebToDate je pro tuto funkci primární nastavení tvaru přidělovaného URL. Jedná se o konstantu
define( 'DETAILURL', '/scripts/detail.php?id=<!--WTD_F(ID)-->' );
Pokud tuto konstantu přepíšete na
define( 'DETAILURL', '/dokument<!--WTD_F(ID)-->.htm' );
budou automaticky přidělovaná URL pro nově vkládané zprávy (v poli Odkaz nadpisu) v tvaru podle předchozího příkladu. Lze zde ovšem použít výběr z následujících výrazů:
- <!--WTD_F(ID)--> - ID zprávy
- <!--WTD_F(ABBREV)--> - zkratka zprávy
- <!--WTD_CONVERT(TITLE)--> - konvertovaný nadpis (konverze ošetřuje to, aby v URL nebyly znaky s diakritikou a další nežádoucí znaky)
- <!--WTD_F(CATEGORYPATH)--> - cesta daná stromem kategorií (dle výchozí kategorie zprávy), tedy např. /zahranicni/evropa/
- <!--WTD_F(LANGUAGEABBREV)--> - zkratka jazyka zprávy převedená na malá písmena
- <!--WTD_F(CALENDARFOLDERS)--> - část cesty podle data zprávy, tedy např. /2007/08/22/.
Druhá konfigurační konstanta NEWSABBREV_AUTOFILL definuje tvar obsahu pole Zkratka.
define( 'NEWSABBREV_AUTOFILL', '<!--WTD_F(ID)-->');
V definici této konstanty lze použít výrazy:
- <!--WTD_F(ID)--> - ID zprávy
- <!--WTD_CONVERT(TITLE)--> - konvertovaný nadpis
Následující tabulka uvádí různé možnosti konfigurace těchto dvou základních konstant - cílové tvary URL a způsob jejich nastavení.
| URL (Odkaz nadpisu) | /domaci/lidovci-a-zeleni-zuzili-vyber-kandidatu-77628/ |
| Zkratka | Prázdná hodnota |
| Předpis pro vyplňování - Odkaz nadpisu | <!--WTD_F(CATEGORYPATH)--><!--WTD_CONVERT(TITLE)-->-<!--WTD_F(ID)-->/ |
| Předpis pro vyplňování - Zkratka | Prázdná hodnota |
| URL (Odkaz nadpisu) | /2007/09/07/lidovci-a-zeleni-zuzili-vyber-kandidatu-77628/ |
| Zkratka | Prázdná hodnota |
| Předpis pro vyplňování - Odkaz nadpisu | <!--WTD_F(CALENDARFOLDERS)--><!--WTD_CONVERT(TITLE)-->-<!--WTD_F(ID)-->/ |
| Předpis pro vyplňování - Zkratka | Prázdná hodnota |
| URL (Odkaz nadpisu) | /domaci/2007/09/07/lidovci-a-zeleni-zuzili-vyber-kandidatu-77628/ |
| Zkratka | Prázdná hodnota |
| Předpis pro vyplňování - Odkaz nadpisu | <!--WTD_F(CATEGORYPATH)--><!--WTD_F(CALENDARFOLDERS)--><!--WTD_CONVERT(TITLE)-->-<!--WTD_F(ID)-->/ |
| Předpis pro vyplňování - Zkratka | Prázdná hodnota |
| URL (Odkaz nadpisu) | /clanky/lidovci-a-zeleni-zuzili-vyber-kandidatu/ |
| Zkratka | lidovci-a-zeleni-zuzili-vyber-kandidatu |
| Předpis pro vyplňování - Odkaz nadpisu | /clanky/<!--WTD_F(ABBREV)-->/ |
| Předpis pro vyplňování - Zkratka | <!--WTD_CONVERT(TITLE)--> |
| URL (Odkaz nadpisu) | /domaci/clanky/lidovci-a-zeleni-zuzili-vyber-kandidatu/ |
| Zkratka | lidovci-a-zeleni-zuzili-vyber-kandidatu |
| Předpis pro vyplňování - Odkaz nadpisu | <!--WTD_F(CATEGORYPATH)-->clanky/<!--WTD_F(ABBREV)-->/ |
| Předpis pro vyplňování - Zkratka | <!--WTD_CONVERT(TITLE)--> |
Kromě základních konfiguračních konstant DETAILURL a NEWSABBREV_AUTOFILL je ovšem k dispozici sada dalších nastavení, pomocí kterých se definuje:
- Způsob případné konverze pole Nadpis do URL
- Omezení maximálních délek pro URL a zkratky
- Způsob řešení toho, jak se automaticky řeší případ, kdy by algoritmus vygeneroval zkratku, která již v databázi existuje (pro případ, že by byl např. stejný nadpis několika různých zpráv)
- Kdy se URL či zkratka automaticky generuje či mění
- Jak mohou uživatelé WebToDate do procesu generování URL či zkratek zasahovat
Následující čtyři konstanty definují převod znaků do URL (při konverzi nadpisu zpráv do pole Zkratka a Odkaz nadpisu). První dvě konstanty definují mapování jednotlivých znaků (tj. obě musí obsahovat stejný počet znaků), třetí konstanta definuje, které znaky se nahrazují za prázdný řetězec. Čtvrtá konstanta pak definuje, zda se provádí převod znaků na malá nebo velká písmena nebo zůstává rozlišení malých a velkých písmen jako v nadpisu zprávy.
define( 'URL_CONVERT_FIND', ',. \\/&' );
define( 'URL_CONVERT_REPLACE', '------' );
define( 'URL_CONVERT_NOCHAR', '\'"#$%()+@?!' );
define( 'URL_CONVERT_CASE', 'LOWER' );
Pokud se do nadpisu vloží nějaký znak, který není v cílové znakové sadě serveru, převede se na číselnou HTML entitu, která se pak objeví ve vygenerovaném URL zprávy, což zpravidla není příliš žádoucí. Aby byla možnost zamezit přenosu těchto entit do URL, jsou k dispozici následující nastavení:
$url_convert_entities_map = array(
'»' => '-',
'3' => '3'
);
define( 'URL_CONVERT_OTHER_ENTITIES', true );
define( 'URL_CONVERT_ENTITIES_CHAR', '' );
Nejprve se nahrazují entity podle pole $url_convert_entities_map. V druhém kroku se všechny zbylé numerické entity nahradí za znak URL_CONVERT_ENTITIES_CHAR (může být i prázdný znak), ale jen v případě, že je nastaveno URL_CONVERT_OTHER_ENTITIES = true.
Postup převodu znaků z nadpisu zprávy do URL je tedy následující:
- Nahrazují se HTML entity a numerické entity
- Znaky uvedené v konstantě URL_CONVERT_FIND se nahrazují za znaky v URL_CONVERT_REPLACE a znaky uvedené v URL_CONVERT_NOCHAR se nahrazují prázdným znakem
- Takto vzniklý řetězec se převádí na spodních 128 znaků ASCII tabulky (tedy znak č na c apod.)
- Podle nastavení konstanty URL_CONVERT_CASE se provádí případný převod na malá nebo velká písmena.
Je nutné omezit maximální délku zkratky a URL - vzhledem k volitelnému nastavení tvaru zkratky či URL je možný případ, kdy by vygenerovaný řetězec byl delší než maximální počet znaků pro tato pole v databázi. K tomu jsou určeny konstanty:
define( 'NEWSURL_MAXLENGTH', 255);
NEWSURL_MAXLENGTH definuje maximální délku obsahu pole Odkaz nadpisu. Pokud je sestavený řetězec delší, ořízne se zprava na tuto hodnotu.
define( 'NEWSURL_CONVERT_MAXLENGTH', 150);
NEWSURL_CONVERT_MAXLENGTH definuje maximální délku té části URL, která vzniká konverzí s využitím výrazu <!--WTD_CONVERT(TITLE)-->. Pokud je tedy výsledek konverze nadpisu delší než zadaná konstanta, ořízne se zprava.
define( 'NEWSABBREV_MAXLENGTH', 150);
NEWSABBREV_MAXLENGTH definuje maximální celkovou délku zkratky, význam je stejný jako u NEWSURL_MAXLENGTH, pouze se aplikuje na obsah pole Zkratka.
define( 'NEWSABBREV_CONVERT_MAXLENGTH', 150);
Význam konstanty NEWSABBREV_CONVERT_MAXLENGTH je stejný jako NEWSURL_CONVERT_MAXLENGTH, pouze se aplikuje na obsah pole Zkratka.
U zkratky se musí počítat s tím, že může v případě konverze nadpisu do zkratky dojít k vytvoření zkratky, která není unikátní, unikátnost zkratky je ale nutným předpokladem fungování URL založených na zkratkách. Proto je zde konstanta
define ('NEWSABBREV_UNIQUE_DELIMITER', '_');
V případě vygenerování zkratky, která již existuje, se postupuje tak, že se unikátní hodnoty pole Zkratka vytvářejí pomocí oddělovače plus čísla na konci; konstanta NEWSABBREV_UNIQUE_DELIMITER definuje tento oddělovač. Nedochází k efektu dvou oddělovačů za sebou, tj. pokud již existuje zpráva ze zkratkou např. abc_2, nová zpráva má zkratku abc_3 a nikoli abc_2_1.
Konstanta NEWSURL_AUTOUPDATE definuje režim automatických změn obsahu polí Odkaz nadpisu a Zkratka.
define( 'NEWSURL_AUTOUPDATE', 0);
Možné hodnoty jsou:
- 0 - zkratka se automaticky nevyplňuje, URL se přidělí podle konstanty DETAILURL při prvním uložení zprávy a už se nikdy automaticky nemění
- 1 - zkratka se automaticky vyplňuje pokud je konstanta NEWSABBREV_AUTOFILL neprázdná. Jak zkratka tak URL se vyplní při prvním uložení zprávy a už se automaticky nemění
- 2 - zkratka a URL se může automaticky změnit při uložení, pokud se změnily údaje, podle kterých se tvoří (seznam údajů je daný konstantami NEWSABBREV_AUTOFILL resp. DETAILURL) a pokud zpráva není ve stavu Publikováno či Archivováno.
- 3 - stejné jako předchozí případ, ale změna zkratky i URL je povolena i v případě, že zpráva je ve stavu Publikováno či Archivováno.
Konstanta NEWSURL_AUTOUPDATE tedy v zásadě definuje úroveň možnosti změnit URL zprávy v průběhu zpracování a změn. Hodnota 0 znamená nejjednodušší stav, kdy se zkratka nepoužívá a URL se na začátku vytvoří a již se pak nemění, čím vyšší číslo, tím méně je zaručeno, že zpráva si zachová původní URL, ale na druhou stranu se tím více URL přizpůsobuje (z hlediska tvaru pro SEO) aktualizaci metadat zprávy (změně nadpisu, změně kategorie apod.).
Algoritmus automatického sestavování URL a zkratky popisuje následující diagram.

V rámci verzování zpráv lze chování URL nastavit pomocí konfigurační konstanty ABBREV_AUTOFILL_ON_PUBLISH.
define('ABBREV_AUTOFILL_ON_PUBLISH', false);
Hodnota true znamená, že je požadováno zachování URL mezi různými verzemi zpráv (tj. při publikaci nové verze se přebírá zkratka a URL předchozí publikované verze), hodnota false znamená, že URL různých verzí zprávy spolu nesouvisejí a chovají se z tohoto hlediska jako samostatné zprávy. Tato možnost zachovávání URL je popsána v následující kapitole.
Konstanta NEWSABBREV_LOCK definuje, zda uživatelé mohou ručně měnit zkratku.
define('NEWSABBREV_LOCK', false);
Hodnota false znamená, že pole je možné běžným způsobem editovat. Hodnota true znamená, že uživatelé s výjimkou členů týmu Administrátoři nemají možnost hodnotu tohoto pole měnit.
Pro zdroje lze určit, zda se systém uživatelsky definovatelných URL a zkratek používá i pro ně (myšleno pro pole Odkaz nadpisu ve zdroji).
define('ASSETS_FRIENDLY_URL', false);
Pokud je konstanta ASSETS_FRIENDLY_URL nastavena na hodnotu true, generují se zkratky a URL pro zdroje stejně jako pro zprávy, v opačném případě se zkratky negenerují a URL se vytvářejí v systémovém tvaru.
Další pravidla lze v mod_rewrite definovat i pro vybrané stránky jiného typu. Pokud chcete, aby taková stránka byla např. výchozí stránka nějaké kategorie (na kterou se odkazují navigace), která je zobrazovaná dynamicky, označte ji jako výchozí stránku a zároveň do pole URL ve vlastnostech kategorie zadejte URL tak jak je definováno v mod_rewrite.
Zkratky a zachování URL verzí zpráv
Jak je uvedeno výše, zprávy lze zobrazovat i s využitím pole Zkratka. Výchozí tvar URL je pak /scripts/detail.php?abbrev=zkratka, samozřejmě pak lze pomocí mod_rewrite nadefinovat jiný tvar URL využívající zkratku. Není-li pole v konfiguraci uzamčeno pro editaci, je obsah pole Zkratka je volně upravovatelný. V případě využívání této možnosti je třeba si uvědomit následující skutečnosti:
- Nekontroluje se vyplnění tohoto pole, pole může být i prázdné
- Když je pole vyplněno a v předpisu pro URL zprávy se zkratka využívá, může se změnit URL zprávy v poli Odkaz nadpisu.
Pokud je nastavena konfigurační konstanta ABBREV_AUTOFILL_ON_PUBLISH na hodnotu false, znamená to, že není požadováno zachování URL mezi verzemi a jednotlivé verze zpráv se v tomto smyslu chovají jako samostatné zprávy.
Pokud je nastavena konstanta ABBREV_AUTOFILL_ON_PUBLISH na hodnotu true, znamená to, že se při publikaci zprávy spouští funkce na převzetí URL a zkratky z předchozí publikované verze. Vyhodnocení toho, co je předchozí verze nezáleží na pořadovém číslu verze, hledá se jiná publikovaná verze zprávy.
Funkce pro převzetí URL z předchozí verze pracuje následovně:
- publikovaná zpráva přebírá zkratku i URL předchozí verze
- pro předchozí verzi se spouští algoritmus vygenerování zkratky a URL dle konfiguračních konstant. To znamená, že předchozí verze přecházející do jiného stavu dostane URL a zkratku v podstatě jako kdyby tato zpráva byla nově založena.
To pak má následující efekt:
- Pokud se postupně publikují nové verze stejné zprávy, URL se nemění pro aktuální verzi zprávy.
- Mění se URL pro zprávy, které nejsou ve "viditelném" stavu (toto URL se nikdy v prezentační vrstvě nepoužije) a případně pro zprávy ve stavu Archivováno, tj. pokud je zpráva nahrazena novou verzí a stará přechází do stavu Archivováno, nová verze má převzaté URL a archivovaná má jiné URL, než původně měla.
Pokud je tedy požadováno zachovávání URL mezi různými verzemi zpráv, nejdůležitější zásadou je, že je třeba nakonfigurovat automatické vyplňování pole Zkratka. S využitím pouze ID zprávy nelze funkčnost zachování URL mezi verzemi zpráv implementovat. Potřebné pravidlo pro mod_rewrite pak musí využívat tvar URL zpráv WebToDate s uvedením obsahu pole zkratka.
Možné nastavení konfiguračních konstant podporujících zachování URL mezi verzemi zpráv je např.:
define( 'DETAILURL', '/dokument<!--WTD_F(ID)-->.html' );
define( 'NEWSABBREV_AUTOFILL', '<!--WTD_F(ID)-->');
define( 'NEWSURL_AUTOUPDATE', 2);
define( 'ABBREV_AUTOFILL_ON_PUBLISH', true);
define( 'NEWSABBREV_LOCK', true);
Způsoby změny URL stránek
V prezentační části webu se používá Prezentační URL stránky. Tato funkce je zavedena proto, aby bylo možné používat v prezentační části srozumitelnější a pro vyhledávače více vhodná URL stránek. Sestavení prezentačního URL automatickým postupem se zásadně liší pro statické stránky (plně generované stránky, které se odesílají z disku www serveru tak jak jsou) a dynamické stránky (stránky obsahující nějaký prvek, který se doplňuje před odesláním stránky do prohlížeče uživatele, nejčastěji se jedná o seznamy zpráv).
Konfigurace tvarů URL pro statické stránky
Pro statické stránky se výchozí z Fyzického URL stránky. Při založení stránky je možné fyzické URL nadefinovat dle potřeby, takže se předpokládá, že takové URL nepotřebuje další optimalizaci. Výjimkou je poslední část URL - název souboru. Fyzické URL vyžaduje zadání názvu (např. index.htm), ale tato část URL se nemusí používat v případě, že se jedná o výchozí dokument (z konfigurace www serveru) a jeho uvádění ani zpravidla není žádoucí z hlediska SEO (např. URL /mojerubrika/index.htm a /mojerubrika/ pak poskytují stejný obsah, což může být vyhledávači penalizováno).
Proto je možno pro statické stránky nadefinovat, že v prezentačním URL má být název výchozích dokumentů odstraněn. Použijí se následující konfigurační konstanty v souboru global.php:
define('REMOVE_DEFAULT_DOCUMENTS_FROM_URL', true );
define('DEFAULT_DOCUMENTS', 'default.htm;default.html;default.php' );
Konstanta REMOVE_DEFAULT_DOCUMENTS_FROM_URL nastavená na hodnotu true vyznačuje, že se při sestavování prezentačního URL statické stránky mají odstraňovat názvy výchozích dokumentů. Konstanta DEFAULT_DOCUMENTS pak definuje názvy těchto výchozích dokumentů oddělené středníkem. Zpravidla postačuje nadefinovat
define('DEFAULT_DOCUMENTS', NEW_CATEGORY_PAGE_NAME );
což znamená, že se název výchozího dokumentu přebírá z konstanty, kterým se definuje výchozí název nově zakládané stránky ve stromu kategorií.
Je nutné, aby názvy výchozích dokumentů v konfiguraci WebToDate odpovídaly názvům výchozích dokumentů www serveru. Výše uvedené nastavení tedy odpovídá v konfiguraci serveru Apache direktivě
DirectoryIndex default.htm default.html default.php
Konfigurace tvarů URL pro dynamické stránky
Pro definici tvaru prezentačního URL dynamických stránek slouží konfigurační konstanta SPAGEURL. Může se jednat např. o tvar
define( 'SPAGEURL', '<!--WTD_F(LANGUAGEABBREV)--><!--WTD_F(CATEGORYPATH)--><!--WTD_CONVERT(TITLE)-->-pg<!--WTD_F(ID)-->/' );
což ve výsledku generuje tvar typu
/cz/zahranicni/evropa/nejnovejsi-zpravy-pg273/
Typické nastavení (do URL se vkládá jen cesta ve stromu kategorií a ID stránky) je
define('SPAGEURL', '<!--WTD_F(CATEGORYPATH)-->-pg<!--WTD_F(ID)-->/' );
V definici konstanty SPAGEURL lze použít následující výrazy:
- <!--WTD_F(ID)--> - ID stránky
- <!--WTD_F(PAGECATEGID)--> - ID kategorie, ve které se stránka nachází
- <!--WTD_CONVERT(TITLE)--> - konvertovaný titulek stránky (konverze ošetřuje to, aby v URL nebyly znaky s diakritikou a další nežádoucí znaky)
- <!--WTD_F(CATEGORYPATH)--> - cesta daná stromem kategorií (dle kategorie stránky), tedy např. /zahranicni/evropa/
- <!--WTD_F(LANGUAGEABBREV)--> - zkratka jazyka stránky převedená na malá písmena
Výchozí hodnota konstanty (pokud není v global.php vůbec nadefinována) je
define( 'SPAGEURL', '/scripts/detail.php?pgid=<!--WTD_F(ID)-->' );
což odpovídá nativním URL dynamických stránek.
Při sestavování prezentačního URL se aplikují stejná nastavení ohledně zpracování URL jako u zpráv, tedy konfigurační konstanty URL_CONVERT_FIND, URL_CONVERT_REPLACE, URL_CONVERT_NOCHAR, URL_CONVERT_CASE, URL_CONVERT_OTHER_ENTITIES, URL_CONVERT_ENTITIES_CHAR a $url_convert_entities_map.
Navíc se pro stránky aplikují nastavení
PAGEURL_MAXLENGTH – maximální délka prezentačního URL pro dynamické stránky
PAGEURL_CONVERT_MAXLENGTH – maximální délka konvertovaného titulku stránky
tedy např.
define( 'PAGEURL_MAXLENGTH', 255);
define( 'PAGEURL_CONVERT_MAXLENGTH', 150);
Způsob využívání konstant pro maximální délku, ošetření vzniku více lomítek za sebou, způsob konverze titulku apod. je analogický jako u URL zpráv.
Stránkování seznamů a tvary URL
Jsou-li pomocí konfigurační konstanty SPAGEURL pozměněny tvary URL dynamických stránek, je třeba v případě, že se používají stránkované seznamy zpráv, předefinovat i výchozí chování stránkovací lišty, jinak by sice první stránka v rámci stránkování měla přidělené prezentační URL, ale další stránky v rámci stránkování by již měly nativní tvar URL.
Pro tyto účely jsou v definici stránkovacích lišt tři pole:
- Sestavovat odkazy – radiopřepínač Výchozí tvar / Čistá URL
- URL první stránky – textové pole
- Suffix URL dalších stránek – textové pole

Radiopřepínač Sestavovat odkazy definuje, jak se budou sestavovat URL dosazovaná za klíčové slovo <!--WTD_NAVIG(URL)-->. Výchozí hodnota je Výchozí tvar, což reprezentuje nativní URL. Přepnutí na Čistá URL znamená, že se využijí další dvě pole pro definici tvaru odkazů. Tato definice vychází z toho, že první stránka v rámci stránkování má nějaké URL (v podstatě prezentační URL stránky) a URL dalších stránek v rámci stránkování vzniká tak, že se k URL první stránky připojí nějaký další řetězec (typicky obsahující informaci o stránkovaném seznamu a číslu stránky v rámci stránkování).
Máme-li v konfiguračním souboru nastaveno
define( 'SPAGEURL', '/scripts/detail.php?pgid=<!--WTD_F(ID)-->' );
a zároveň pole nastavena následovně:
URL první stránky: <!--WTD_NAVIG(SURL)-->
Suffix URL dalších stránek: &conn=<!--WTD_NAVIG(LISTID)-->&pg=<!--WTD_NAVIG(PAGINGID)-->
pak tento aparát opět generuje URL dynamických stránek i URL dalších stránek v rámci stránkování v nativním tvaru.
Kromě výrazu <!--WTD_NAVIG(SURL)-->, který reprezentuje prezentační URL stránky (nebo URL zprávy, pokud se jedná o stránkování příloh ke zprávě), lze ještě v poli URL první stránky použít výraz <!--WTD_NAVIG(PAGEID)--> reprezentující ID stránky nebo zprávy. Pro tato pole jsou k dispozici následující výrazy:
<!--WTD_NAVIG(PAGEID)--> - ID zobrazované stránky (URL první stránky lze definovat např. jako /scripts/detail.php?pgid=<!--WTD_NAVIG(PAGEID)-->)
<!--WTD_NAVIG(ABBREV)--> - zkratka zobrazované zprávy
<!--WTD_NAVIG(SURL)--> - prezentační URL zobrazované stránky
<!--WTD_NAVIG(LISTID)--> - ID stránkovaného seznamu
<!--WTD_NAVIG(PAGINGID)--> - číslo stránky v rámci stránkování seznamu
<!--WTD_NAVIG(URL_PARAMETERS)--> - část URL za otazníkem tak jej generuje stránkovací lišta v nativním tvaru, čili např. pgid=173&conn=609&pg=4
Klíčové slovo <!--WTD_NAVIG(SURL)--> dosazuje URL první stránky v rámci stránkování kontextově podle toho, o jaký typ zobrazovaného obsahu se jedná. V případě, že jde místo stránek o zprávy (např. se stránkovanou fotogalerií), můžeme požadovat tvar URL
/zpravy/domaci/nadpis-zpravy-190870/
pro první stránku zprávy v rámci stránkování, a
/zpravy/domaci/nadpis-zpravy-190870/70/2/
pro další stránku v rámci stránkování.
Pokud chceme dosáhnout URL typu /zahranicni/evropa/nejnovejsi-zpravy-pg173/609/4/ (první část je prezentační URL první stránky v rámci stránkování, 609 je ID seznamu, 4 je číslo stránky v rámci stránkování), nastavíme:
URL první stránky: <!--WTD_NAVIG(SURL)-->
Suffix URL dalších stránek: <!--WTD_NAVIG(LISTID)-->/<!--WTD_NAVIG(PAGINGID)-->/
Pokud se např. stránkuje fotogalerie a pro identifikaci zpráv se používá zkratka, je nativní tvar URL /scripts/detail.php?abbrev=29143&conn=614&pg=2. Vzhledem k tomu, že <!--WTD_NAVIG(SURL)--> v tomto případě dosadí URL zprávy, lze použít uvedené nastavení i pro tento případ a URL typu /zpravy/domaci/nadpis-zpravy-3333/70/2/ by mělo být funkční i v tomto případě (3333 je zde ovšem zkratka zprávy, což musí ošetřit příslušný rewrite rule).