"Pekné url" - ako na ne?

V poslednom čase veľa webových projektov začína využívať tzv. pekné url (nazývané slangovo tiež cool url), kde priamo z adresy dokážeme približne určiť, čoho sa týka obsah stránky.

Ako vlastne taká pekná url adresa vyzerá? Najčastejšie sa skladá z názvu článku. Určite pôsobí prívetivejšie adresa v tvare www.pmacko.sk/php-mysql/pekne-url-ako-na-ne ako napríklad adresa www.pmacko.sk/?idKat=3&idCl=3.

Spôsobov, ako vytvoriť takéto adresy je viac. Každá z ďalej ponúkaných možností má svoje výhody, ale aj nevýhody. Je na tvorcovi webu, aby zvážil, čo mu vyhovuje, a samozrejme, aké možnosti poskytuje hosting, kde sa jeho stránky nachádzajú.

Možnosť prvá - každá strana má svoj skript

Najjednoduchší spôsob realizácie, ktorý je vhodné použiť pre menšie projekty s malým množstvom stránok, obsah ktorých sa príliš často nemení. Napríklad na osobné stránky, webové prezentácie malých firiem a podobne. Realizácia je veľmi jednoduchá. Vytvoríme názvy skriptov tak, aby charakterizovali obsah stránok.

index.html
o-firme.html
ponuka.html
kontakt.html

Volaná url v prehliadači bude mať potom tvar http://nejakadomena.sk/o-firme.html

Veľmi podobná možnosť je využitie adresárov, kde adresáru dáme vhodný názov a do neho vždy umiestnime skript index.html, ktorý obsahuje daný obsah.

index.html
o-firme
ponuka
kontakt

Volaná url bude v tvare http://nejakadomena.sk/o-firme/

Možnosť druhá - využitie 404

Väčšina hostingových služieb ponúka možnosť nastaviť si vlastnú 404 Not Found stránku. Každá požiadavka smerujúca na server, ak sa nenájde zadaný súbor sa presmeruje na 404 stránku, kde môžeme pomocou $_SERVER['REQUEST_URI'] zistiť, aký dokument bol požadovaný a následne zobraziť jeho obsah. Dôležité je uvedomiť si, že využívame stránku 404, ktorá posiela v hlavičke tento status, a teda je potrebné ho zmeniť využitím zápisu:

<?php header('HTTP/1.1 200 OK'); ?>

V opačnom prípade by vyhľadávač všetky stránky chápal ako neexistujúce a nezaradil ich do výsledkov vyhľadávania.

Možnosť tretia - mod_rewrite

Podstata mod_rewrite je v neexistujúcich názvoch súborov (resp. adresárov) namiesto ktorých server podstrčí dynamicky vygenerovaný obsah. K spusteniu mod_rewrite je potrebné, aby bol podporovaný serverom, najčastejšie stačí iba načítať potrebný modul pri štarte apache. To umožníte vložením

LoadModule rewrite_module modules/mod_rewrite.so</code> do httpd.conf

To však nie je všetko, ďalej je potrebné vytvoriť súbor .htaccess (bodka na začiatku názvu musí byť) priamo vo vašom koreňovom adresári, a doňho vpísať, ako sa má server správať v prípade požiadavky na konkrétne súbory. Najjednoduchší zápis bude vyzerať takto

RewriteEngine On
RewriteRule ^(.*).html$ index.php?stranka=$1&%{QUERY_STRING}

Takýto zápis spôsobí, že všetky požadované súbory sa presmerujú na index.php kde sa do parametra stranka vloží názov a cesta k požadovanému obsahu, a ostatné parametre z url adresy sa štandardne prenesú. Problém nastáva v prípade, sa potrebujete dostať k niektorému obsahu priamo (napríklad k obrázkom, kaskádovým štylom,...) Spomínaný problém vyriešime definovaním výnimiek. Výsledný obsah .htaccess bude vyzerať napríklad takto:

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !(.*/img/.*)
RewriteCond %{SCRIPT_FILENAME} !(.*/css/.*)
RewriteRule (.*) index.php?m=$1&%{QUERY_STRING}

Znamená to, že všetko okrem adresárov img a css sa bude presmerovávať na index.php

Doležité pri využívaní tohto spôsobu je aby server mal nainštalovaný mod_rewrite a mal povolené použitie súboru .htaccess Povolenie .htaccess sa nastaví najčastejšie v httpd.conf použitím

AllowOverride all

Ciest k "peknej url" je veľa, je na rozhodnutí autora webu, ktorý spôsob realizácie si vyberie.