S problémom hostingu, kde nie je mod_rewrite povolený, som sa stretol už dávno. A jeden z nich je aj IC.cz, na ktorom hostujem ja. Pred mesiacom som si kúpil knihu 1001 Tipů a triků pro PHP od Jakuba Vrány a tam som sa dočítal o teoretickom postupe ako mať na stránke Cool URL aj bez mod_rewrite. A tak som sa rozhodol si pre to napísať knižnicu v PHP a poskytnúť ju svetu.
Pre tých čo nevedia čo to Cool URL sú, je tu malé zhrnutie, ak to viete môžete tento odsek preskočiť. Cool URL je URL oveľa vizuálne krajšia a pre používateľa ľahšie zapamätateľná. Porovnajte si napríklad „www.priklad.sk/?clanok=12“ a „www.priklad.sk/novy-clanok/“. Tento typ URL je vraj výhodný aj pre vyhľadávač pretože dané kľúčové slovo vidí aj v URL adrese.
Základné technické požiadavky na knižnicu sú PHP5 alebo vyššie a mať zapnutú v Apache konfiguračnú direktívu AcceptPathInfo. Väčšina dnešných hostingov toto spĺňa. Zapojiť knižnicu do už fungujúcej stránky nie je problém keďže je schopná automaticky presmerovať z URL starého typu na nové(do môjho starého a neprehľadného RS som ju zapájal asi hodinu, a to som sa mu v zdrojovom kóde nevŕtal rok 😀).
Stiahnuť ju môžete tu: CoolUrl_1.0
Zip obsahuje dva súbory, jeden je prehľadný kód knižnice a druhý je jej zredukovaná verzia. Vloženie do stránky je veľmi jednoduché. Knižnica sa musí načítať a spustiť pred akýmkoľvek vypísaním textu keďže používa funkciu Header()
.
<?php require_once 'CoolUrl.php'; $coolUrl = new CoolUrl($model, $separator, $array);
Prvá premenná $model
je určená pre model URL adresy stránky. Jednotlivé premenné sa zapisujú medzi @@
, napríklad @premenna@
. Pre názvy premenných platia rovnaké pravidlá ako pre premenné v PHP. Jednotlivé premenné sa oddeľujú znakom /
. Model môže vypadať napríklad takto: clanok/@nazov@
, @nazov@/@id@
.
$separator sa automaticky dáva na koniec modelu a nahrádza znaky /
v modeli. Automaticky je nastavený na /
, takže pri vytváraní ho nie je povinné zadať.
$array je pole do ktorého sa uložia premenné z URL, automaticky je nastavená na $_GET
, takže nie je povinné ho zadať.
Nevýhoda týchto URL je, že fungujú na základe ukladanie časti URL po .php do premennej $_SERVER[‚PATH_INFO‘]
. Tým pádom vypadajú takto: clanok.php/nazov-clanku/
. Toto chovanie sa dá ale obísť ak sú na Apache servery zapnuté vloby Options MultiViews a MultiviewMatch Handlers. Tento spôsob používa napríklad Wikipedia.
Knižnicu môžete voľne používať ako chcete stačí uviesť autora. Ak sa chcete takýchto zaujímavostí dozvedieť viac, odporúčam vám kúpiť si knihu 1001 Tipů a triků pro PHP.
V poslednej dobe som dostal nápad ešte na najmenej jeden článok, takže čoskoro tu možno bude ďalší článok.