Zpět na úvodní stránku

SEO adresy

Nechci nikoho zatěžovat povídáním o (ne)užitečnosti hezkých adres článků. Líbí se to vyhledávačům (bude k vám chodit víc lidí), líbí se to i samotným lidem... a autorům :)

Zpočátku systém umožňoval mít adresy ve tvaru http://web.cz/?text=52... typické řešení, které lze vidět kdekoli jinde (místo ?text tam bude třeba ?id...). Jedinou možností zkrásnění takové adresy bylo zapnutí SEO adres v nastavení webu. Pak adresa mohla vypadat takto: http://web.cz?text=52-a-nejaky-nadpis. To už je lepší, ale stejně ne to pravé ořechové.

Nyní lze jít ještě dál. V adresáři systému je soubor .htaccess-vychozi ... ano, přesně takhle divně se jmenuje, i s tou tečkou na začátku a žádnou příponou. Ber to jako hotovou věc. Tento soubor zajišťuje převedení hezkých adres na adresy, kterým rozumí systém. Některé webhostingy jej podporují, některé ne, jindy je třeba zaslat obsah tohoto souboru třeba mejlem administrátorům... pokud by na to došlo, otevři jej jako normální texťák a zkopíruj obsah. Nic těžkého.

Protože je tahle funkce poněkud netradiční a její využití vyžaduje více než nějaké kliknutí, i její zapnutí v systému je složitější. Pokud může být složité otevření nějakého souboru v Poznámkovém bloku a změna několika písmen. V administraci nastavení SEO adres existuje, ale to změní adresy ve stylu popsaném v druhém odstavci.

Pokud tedy máš zájem, aby adresy tvých textů vypadaly třeba takto:
http://web.cz/52-a-nejaky-nadpis.html
tak čti dál :)

Je nutné editovat soubor funkce.php ... jak napovídá jeho název, mám v něm uložené často používané funkce. Neboj se, nemusíš být programátor, aby ses v nich vyznal

Následující kód je příkladem jedné z tamějších funkcí... předchází jí komentář a po něm následuje samotná funkce uvozená slovem function, jménem funkce, parametry (nepodstatné) a veškerý její obsah je uzavřen do složených záverk { ... }

/**
*  Tuhle fci jsem si napsal pro zjednoduseni ukladani souboru, resp kese. Tot vse.
*/
function ulozData($kam,$co)     {
  $fp = fopen($kam,'w');
  fwrite($fp,$co);
  fclose($fp);
  }

Pro zapnutí SEO adres je nutné lehce editovat dvě funkce (v pořadí jde o druhou a třetí): makeUrl() a makeArchivUrl().

Funkce makeUrl()

V té je nutné podívat se na následující kód.

/* Nastaveni pri pouziti souboru .htaccess */
$pouzivat_htaccess = false; // opacna moznost: true
$url_prefix_htaccess = '';
$url_postfix_htaccess = '.html';

Pro zapnutí SEO adres je nutné přepsat slovíčko false na true. Prostě tam, kde je napsáné "false" toto "false" smažeš a napíšeš "true" (bez uvozovek). Kdyby jsi teď skončil, tvoje adresy budou vypadat takto: http://web.cz/52-a-nejaky-nadpis.html. To je výchozí nastavení.

Kdyby onen kód vypadal takto:

/* Nastaveni pri pouziti souboru .htaccess */
$pouzivat_htaccess = true; // opacna moznost: true
$url_prefix_htaccess = 'text-';
$url_postfix_htaccess = '.php';

...tak budou adresy hned vypadat jinak: http://web.cz/text-52-a-nejaky-nadpis.php

Nastav si do uvozovek hodnoty, jaké se ti líbí (ale s rozmyslem) a pokračuj na funkci makeArchivUrl().

Funkce makeArchivUrl()

V této funkci je toho na nastavení méně, stačí pouze (opět) změnit u proměnné $pouzivat_htaccess hodnotu false na true.

Tato funkce se stará o všechny odkazy do archivu... kategorie, minulé roky, autoři, ...

Co dál?

Nyní soubor funkce.php ulož a nahrej na server. Hned poté musíš také na serveru přejmenovat soubor .htaccess-vychozi na .htaccess. Problémy mohou nastat ve Windows, protože těm se tento divný název nelíbí a nedovolí ti jej přepsat na cokoli jiného. Jde to třeba v Total Commanderu.

Na serveru tedy musíš mít upravený soubor funkce.php a přejmenovaný soubor .htaccess. Pokud se poté podíváš na web, měly by být adresy v adresní řádce prohlížeče jiné než předtím :)

Pokud vše funguje jak má, můžeš si ještě upravit odkazy v menu (v šablonách). Nyní už sice funguje, že (třeba) na archiv lze odkazovat adresou http://web.cz/index.php?archiv, ale pomocí této funkce je najednou možné odkazovat i adresou http://web.cz/archiv (ovšem bez lomítka na konci).

Kdo tedy chce, může si takto upravit i menu.

Otázky a odpovědi

Proč mají hezké adresy jen texty? co takové články? Problém článků je ten, že se nikam nevkládají odkazy na ně. Když autor napíše článek, tak potom někam vloží manuálně odkaz na něj. Kdyby odkazy tvořil systém, samozřejmě že bude hezké adresy podporovat, ale takhle je to na autorovi. Bude-li důsledně všechny adresy článků psát ve tvaru web.cz/clanek-25-maly-letni-vylet.html a do .htaccess souboru si přidá direktivu RewriteRule    ^clanek-([0-9]{1,3}).*$    index.php?clanek=$1 [L,QSA], pak mu bude vše hezky fungovat.

Co se stane, když budu mít v archivu adresy archiv/rok/2005/mesic/9/? No, nastanou komplikace. Systém pracuje s relativními adresami obrázků, odkazů, souborů kaskádových stylů... Pohybuješ-li se klikáním po úvodní stránce, stále jako bys byl v hlavním adresáři webu. A má-li se v textu zobrazit obrázek, jehož adresa je ./images/obr.jpg, bude se hledat na adrese hlavni-adresar/images/obr.jpg. Ona tečka v adrese znamená aktuální adresář, a to je ten hlavní. Pokud by ovšem byla použita adresa stránky jako v otázce, bude systém kvůli relativním cestám k souborům hledat obrázek na adrese archiv/rok/2005/mesic/9/images/obr.jpg ... a ty dobře víš, že nikde ve složce systému taková adresa není :(

Řešením by bylo zavést všude pevné (absolutní) adresy. Jenže to by bylo poněkud více úprav, než bych si aktuálně přál. Možná někdy...