<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C/DTD XHTML+Voice 1.2 /EN' 'http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voice12.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:ev='http://www.w3.org/2001/xml-events'>
<head>
<link rel='canonical' href='http://pabi3.com/blog/praca-s-apache-mod-rewrite-v-htaccess/' />
<link rel='stylesheet' href='http://pabi3.com/modules/items/voice.css' type='text/css' media='all' />
<form xmlns='http://www.w3.org/2001/vxml' id='title'>
<block>
The article Praca s Apache - mod-rewrite v .htaccess is written by PaBi3
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='body'>
<block>

Ak chcete aby URL vo vasej aplikacii ci weblogu posobili na uzivatelov dobre a
prospievali vasej stranke zo strany vyhladavacov pouzivajte mod-rewrite.
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='full'>
<block>

Mozno ste sa uz stretli zo zaujimavymi adresami URL napr. aj v tomto magazine.
Predpokladam, ze nikoho nenapadne odkial pochadza zdroj URL resp. aky skript
prave spustil koncovy uzivatel. Cielom tohoto clanku bude jednoducha zmena URL
na jej vylepsenu formu, cize konecny vysledok by mal vplyvat lepsie na vyhladavace
, uzivatela a celkovy dojem zo stranky.


Ako zacat?

Nebudem sa zameriavat priamo na nastavenie mod-rewrite na localhost
ale budem pracovat rovno s hotovym nastavenim. Obycajne by vsak malo stacit
odkomentovat modul #modrewrite. Ako prve vytvorim PHP kod, ktory je sam zdrojom
pre dlhe a skarede URL adresy. Nasledujuci kod by mal takyto typ adresy zabezpecit.


&lt;?php #index.php
&nbsp;if(isset($_GET['id'])){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(is_numeric($_GET['id'])){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "&lt;p&gt;Toto je clanok cislo {$_GET['id']}&lt;/p&gt;n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("&lt;p&gt;Nespravny format id&lt;/p&gt;n");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;}
?&gt;


Po spusteni skriptu skuste zadat url v tvare index.php?id=3. V momente
bude do prehliadaca zaslany HTML kod a na strane uzivatela uvidite vypis:

Toto je clanok cislo 3

Vytvarame subor .htaccess

Vytvorte si subor .htaccess. Vacsinou by nemali nastat pri vytvarani tohoto
suboru ziadne problemy ale sem tam sa moze vyskytnut problem ked sa tento
subor vytvorit neda vobec a to konkretne v systemoch Windows. Pokial tento problem
u vas pretrvava skuste si ho vytvorit, tak ze ho rovno ulozite pomocou nejakeho editoru
alebo si ho stiahnite cez FTP.


Zapisanie pravidiel prepisovania URL

Ak uz mame vytvoreny subor .htaccess mozeme zacat s pisanim pravidiel
pre prepisovanie URL. V nasom pripade sa pokusime zmenit napr. adresu
index.php?id=3 na clanok3.html. Nenechajte sa zmiast tou
3. Moze tam byt akekolvek cislo ale nie pismeno. To by ste vsak uz mali ovladat
ak si prezriete PHP kod.



Do suboru zapiste nasledujuce pravidla:

RewriteEngine on
RewriteRule clanok(.*)\.html$ index.php?id=$1


Pomocou RewriteEngine s atributom "on" sme zapli mod-rewrite a nasledovne
RewriteRule je definovane pravidlo pre prepisanie nasej adresy.
Adresa index.php?id=$1 bude zmenena do tvaru clanok(.*).html.


Na co si davat pozor?

Predovsetkym sa nehrajte s .htaccess az natolko, ze vam stranka nebude fungovat.
Pri akejkolvek chybe v syntaxi bude koncovy uzivatel presmerovany na chybu 500.
Cize si moze mysliet, ze stranka neexistuje. Toto by ste si ale pri editacii asi
mali ihned vsimnut. Zalezi to vsak aj na nastaveni suboru httpd-conf ci
sa uzivatel dostane tam kam vy nechcete.


URL adresa prepisana

Teraz ked uz subor index.php a .htaccess je ulozeny v korenovej
zlozke mozeme si vyskusat do prehliadaca zadat adresu index.php?id=25 a
nasledne vyskusame do prehliadaca zadat aj adresu clanok25.html.
Takto sa daju menit aj rozne dlhe URL adresy.



Mod-rewrite je skvela vec. Teraz su v priprave clanky o .htaccess kde
bude popisane mnoho o jeho moznostiach. Samozrejme netreba si spajat mod-rewrite
a .htaccess, pretoze su to v podstate dve rozne veci. Subor .htaccess len
pouzitie mod-rewrite sprostredkuva a mod-rewrite je len jedna mala ryba v rybniku,
ak by som to mal prirovnat k poctu modulov na Apache.
</block>
</form>
<base href='http://pabi3.com/' />
<title>Práca s Apache - mod-rewrite v .htaccess</title>
</head>
<body ev:event='load' ev:handler='#title'>
<a href='http://pabi3.com/blog/praca-s-apache-mod-rewrite-v-htaccess/' title='Návrat'>Návrat</a>
<h1 style='padding:0.5em;'>Práca s Apache - mod-rewrite v .htaccess</h1>
<ul>
<li ev:event='click' ev:handler='#body'>Speak introduction</li>
<li ev:event='click' ev:handler='#full'>Speak full</li>
</ul>
</body>
</html>

