WebToDate/Extenze/Extenze pro zamezení funkčnosti podvržených rewritovaných URL zpráv
Funkcionalita
WebToDate umožňuje pro zprávy generování SEO-friendly URL. Místo standardního tvaru URL stránky pro zobrazení celého textu zprávy (/scripts/detail.php?id=xxx) se pak používá jiný tvar např. typu /cz/o-webtodate/technicke-informace/systemove-pozadavky/xxx/, kde xxx je interní ID zprávy. Aby tento způsob práce s URL zpráv byl funkční, musí být tvary URL nastaveny v konfiguračním souboru WebToDate a musí být instalován a konfigurován modul www serveru podporující tuto funkčnost (např. mod_rewrite www serveru Apache). Vygenerovaná URL se automaticky zapisují do pole Odkaz nadpisu databáze zpráv.
Tento systém sám o sobě ale nezajišťuje, že nejsou funkční jiná podvržená původně neplánovaná URL, tedy že kromě URL /cz/o-webtodate/technicke-informace/systemove-pozadavky/xxx/ není zároveň funkční i /cokoli/co/zde-napisete/xxx/, kde xxx je stále stejné ID zprávy. Tento problém řeší nasazení této extenze. Extenze kontroluje před zobrazením zprávy její URL tak, že jej porovnává s polem Odkaz nadpisu této zprávy. Analogicky extenze porovnává i prezentační URL dynamických stránek s volaným URL.
Pokud porovnání URL souhlasí nebo je URL ve výchozím tvaru, zpráva se zobrazí, v opačném případě je vyvolána chybová stránka.
Instalace
Do souboru config/_preprocess_inc.php vložte následující kód:
// - extenze Rewrite - kontrola URL
$arrModules[] = 'rewrite/_check_pre_inc.php';
Ujistěte se, že v instalaci WebToDate existuje soubor /scripts/modules/rewrite/_check_pre_inc.php.
Reference
Extenze kontroluje
- před zobrazením zprávy její URL tak, že jej porovnává s polem Odkaz nadpisu této zprávy
- před zobrazením dynamické stránky její URL tak, že jej porovnává s polem Prezentační URL ve vlastnostech stránky. Pokud se jedná o nějakou další stránku v rámci stránkování seznamu vloženého do stránky, kontroluje se, jestli se jedná o prezentační URL + nějaký suffix (který obsahuje parametry stránkování).
Pokud porovnání URL souhlasí nebo je URL ve výchozím tvaru (/scripts/detail.php?id=xxx resp. /scripts/detail.php?pgid=xxx), zpráva či stránka se zobrazí, v opačném případě je vyvolána http chyba 404 Not Found.
V konfiguračním souboru WebToDate může být nepovinně vložena konstanta ERROR_404 obsahující cestu k chybové stránce. Pokud je tato konstanta definována, nevyvolá extenze přímo http chybu, ale zobrazí tuto chybovou stránku.
Extenzi je dále možno přepnout do režimu, kdy v případě záporného výsledku kontroly nevyvolá chybu 404 Not Found, ale provede přesměrování na URL z pole Odkaz nadpisu resp. Prezentační URL. V konfiguračním souboru WebToDate global.php lze pro tento případ přidat konstantu REWRITE_CHECK_REDIRECT. Pokud konstanta není definována nebo je nastavena na hodnotu false, extenze vyvolává chybu 404, pokud je konstanta nastavena na hodnotu true, provádí se přesměrování.