<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
	
	<title>RSS 2.0 Článků kategorie "mod_rewrite"</title>
	<atom:link href="https://mike.treba.cz/rss/kategorie/mod-rewrite/" rel="self" type="application/rss+xml" />
	<link>https://mike.treba.cz/</link>
	<description>RSS 2.0 Článků kategorie "mod_rewrite"</description>
	<lastBuildDate>Thu, 21 May 2015 21:16:57 +1100</lastBuildDate>
	<language>cs</language>
	<generator>Abstract CMS</generator>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>

		
		<item>
			<title>mod_rewrite a hezké url díl III</title>
			<link>https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-iii/</link>
			<pubDate>Thu, 21 May 2015 21:16:57 +1100</pubDate> 
			<comments>https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-iii/#comments</comments>
			<dc:creator></dc:creator>
			<description><![CDATA[<p>Články o mod_rewrite pro hezké url mi dlouhodobě zaznamenávají velkou návštěvnost, což ale není ten důvod, proč jsem se rozhodl napsat díl už asi osmistý padesátý prvý. Některé věci je totiž nutné uvést po letech <strong>na pravou míru</strong>: předchozí díly měly v prvé řadě ukázat, že pomocí mod_rewrite lze dosáhnout cokoli, co si člověk jenom zamane. Každá aplikace, byť je sebehůř napsaná, má šanci na přátelská url. </p>]]></description>   
			<guid isPermaLink="false">https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-iii/</guid>
			<content:encoded><![CDATA[<p>Články o mod_rewrite pro hezké url mi dlouhodobě zaznamenávají velkou návštěvnost, což ale není ten důvod, proč jsem se rozhodl napsat díl už asi osmistý padesátý prvý. Některé věci je totiž nutné uvést po letech <strong>na pravou míru</strong>: předchozí díly měly v prvé řadě ukázat, že pomocí mod_rewrite lze dosáhnout cokoli, co si člověk jenom zamane. Každá aplikace, byť je sebehůř napsaná, má šanci na přátelská url. </p> <p>Problém nastal v případě, kdy měli méně zkušení uživatelé tendence psát hromady zbytečně krkolomných pravidel nebo se je snažili nasadit na nevhodně navrženou strukturu url adres - namísto toho, aby začali s úpravami v PHP kódu. Sám jsem takovým uživatelem býval, ale dnes už vím, jaká je v jednoduchosti síla. Dnešní pokračování seriálu o mod_rewrite tedy vše zase zjednoduší. Představíme si 5 základních využití mod_rewrite, které vám vystačí téměř na jakkoli náročný projekt.</p>
<h2>1. Obecné přesměrování</h2>
<p>Zapsat do souboru .htaccess přesměrování je jedna z věcí, kterou potřebuje každý. Následující 3 případy by měly pokrýt většinu případů, kdy budeme přesměrování potřebovat:</p>
<ol>
<li>Přesouváme celý web na novou doménu.</li>
<li>Změnila se url článků a nemáme v PHP naprogramovaný modul, který by redirectoval automaticky.</li>
<li>Změnila se url kategorie a je potřeba přesměrovat i vše, co je uvnitř.</li>
</ol>
<pre><code># celý web na novou doménu
RewriteRule ^(.*)$ http://www.nova-domena.cz/$1 [L,R=301,QSA]

# konkrétní url na jinou konkrétní url
RewriteRule ^clanek/?$ jiny-clanek/ [L,R=301]

# stará kategorie a vše uvnitř na novou kategorii
RewriteRule ^stara-kategorie/(.*)$ nova-kategorie/$1 [L,R=301]</code></pre>
<h2>2. Přidání nebo umazání www před doménovým jménem</h2>
<p>Pro domény druhého řádu chceme www přidávat, u domén třetího řádu zase odmazávat. Toto by mělo být zpravidla vyřešeno už na úrovni hostingu, ale ne vždy tomu tak bývá. Proto druhý typ přepisů, které člověk využije, je právě přidávání respektive umazávání "www".</p>
<pre><code># umazání www
RewriteCond %{HTTP_HOST} ^www.mujweb.cz$
RewriteRule (.*) http://mujweb.cz/$1 [R=301,QSA,L]

# přidání www
RewriteCond %{HTTP_HOST} ^mujweb.cz$
RewriteRule (.*) http://www.mujweb.cz/$1 [R=301,QSA,L]</code></pre>
<h2>3. Hezké url pro jednoduchý web</h2>
<p>Pokud máme vytvořený jednoduchý web, který využívá <strong>include </strong>podle <strong>GET proměnné</strong> nebo je vše rozházeno v souborech *.php v kořenovém adresáři webu, bude vždy stačit jedno z následujících pravidel. Víc opravdu není nutné. Jakmile začneme mít potřebu složitějších rewritů, máme tu už jedno obecné pravidlo, které vystačí jak na miniaturní webík tak na monstrózní aplikaci.</p>
<pre><code># index.php?page=neco =&gt; neco/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L]

# stranka.php =&gt; stranka/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]</code></pre>
<h2>4. Hezké url pro web libovolné náročnosti</h2>
<p>Všechno na index.php. Víc není potřeba. Bude existovat jedna GET proměnná, kterou rozbijeme podle lomítka a necháme už PHP, aby si zpracovalo řetězec podle své potřeby. Ve chvíli, kdy pocítíme potřebu dalších GET proměnných, rewritovat je už nebudeme, protože to prostě není potřeba. Jestl i tak máme stále nutkání tyto proměnné rewritovat, bude možná lepší se nejdřív zamyslet nad architekturou aplikace.</p>
<pre><code># vše na index.php a proměnnou $_GET[path]
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]</code></pre>
<h2>5. Výjimka z předchozího příkladu</h2>
<p>Zase tak jednoduché to nakonec nebude, abychom všechno pokryli jedním pravidlem :o) Občas potřebujeme určité url adresy nasměrovat na jiný soubor, než index.php: například proto, aby se zbytečně nenačítalo celé jádro systému a všechny knihovny, když chceme udělat jenom jednoduchý AJAX request. Nebo nabídnout soubor ke stažení tak, aby nebyla vidět ani url souboru ani skutečná url skriptu, který soubor ke stažení nabídne. Přidáme tedy pravidlo druhé, které musí být uvedeno před tím prvním: pokud regulární výraz nebude splněn, server aplikuje pravidlo druhé.</p>
<pre><code>RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^simple_module/(.*)?$ index_simple.php?path=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]</code></pre>
<h2>6. HTTP na HTTPS</h2>
<p>SSL certifikát je dnes už téměř samozřejmostí a občas potřebujeme na celé doméně přidat to "s" do protokolu. To nám umožní následující zápis.</p>
<pre><code>RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.treba.cz/$1 [R=301,L]</code></pre>
<p><strong>Čtvrtý bod</strong> bych měl ještě asi trochu více rozvést. Kdykoli bude výsledná url stránky například "<em>www.treba.cz/hlavni-kategorie/dalsi-kategorie/</em>", proměnná $_GET["path"] bude mít hodnotu "<em>hlavni-kategorie/dalsi-kategorie/</em>". Proměnnou rozbijeme podle lomítka (<em>funkcí explode</em>) a šáhneme do databáze pro "<em>Další kategorii</em>" která má nad sebou "<em>Hlavní kategorii</em>". Tedy namísto vícenásobných identifikátorů pro strukturu stránek pracujeme s polem hodnot.</p>
<p>Jestliže chceme přidat ještě i nějaké stránkování (<em>které mimochodem opravdu nemusí mít "pěkné" url</em>), stačí otestovat poslední hodnotu pole na celé číslo. Tím rozlišíme, že "<em>hlavni-kategorie/2/</em>" je pouze druhá stránka výpisu příspěvků, nikoli kategorie "<em>2</em>". Problém samozřejmě nastane ve chvíli, kdy budeme kategorii pojmenovanou "<em>2</em>" vlastně chtít: a jedno nám přebije druhé.</p>
<p>A to je vše dámy a pánové. V předchozích dílech seriálu jsem vás naučil, jak mod_rewrite funguje, co všechno dokáže a jak specifická pravidla umožňuje napsat. A díky tomu jsem dnes mohl ukázat, že dané vědomosti je dobré mít, ale v praxi je vždy využijeme na mnohem jednodušší úrovni.</p>]]></content:encoded>
			<image>
    				<url>https://mike.treba.cz/img/2023/renewed/server-room-3.jpg</url>
			</image>
		</item>
		
		
		<item>
			<title>mod_rewrite a hezké url díl II</title>
			<link>https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/</link>
			<pubDate>Sat, 9 Jun 2007 21:54:08 +1100</pubDate> 
			<comments>https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/#comments</comments>
			<dc:creator></dc:creator>
			<description><![CDATA[<p>V minulém dílu článku <a href="mod_rewrite-a-hezke-url/">mod_rewrite a hezké url</a> jsem Vám ukázal pár jednoduchých přepisů pro domény nižších řádů, přesměrování na url s / bez www, zpětné přesměrování ze subdomény na doménu a na konec samotný přepis <em>hezkých url</em> pro jednu a dvě proměnné. V druhém dílu seriálu se pokusím popsat základní problémy, které mohou nastat s použitím mod_rewrite a uvedu některé další příklady. </p>]]></description>   
			<guid isPermaLink="false">https://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/</guid>
			<content:encoded><![CDATA[<p>V minulém dílu článku <a href="mod_rewrite-a-hezke-url/">mod_rewrite a hezké url</a> jsem Vám ukázal pár jednoduchých přepisů pro domény nižších řádů, přesměrování na url s / bez www, zpětné přesměrování ze subdomény na doménu a na konec samotný přepis <em>hezkých url</em> pro jednu a dvě proměnné. V druhém dílu seriálu se pokusím popsat základní problémy, které mohou nastat s použitím mod_rewrite a uvedu některé další příklady. </p> <p>Například jsem se často setkal s věčným opakováním RewriteEngine On a RewriteBase před každám pravidlem: ne, není nutné to stále opakovat. Co ale musí být u každé další proměnné uvedeno, je RewriteCond. Podmínka RewriteCond testuje, zda-li soubor či adresář daného jména neexistuje. (! negace, - parametr, d=dir - složka, f=file - soubor)</p>
<pre><code><span class="codecomment italic"># mujweb.cz/?page=neco &gt; mujweb.cz/neco/</span>

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]&plus;)/?$ ?page=$1</code></pre>
<p>Když se tedy znovu podíváme na základní příklad z prvního dílu: RewriteEngine On - zapneme mod_rewrite. RewriteBase - budeme vycházet z kořenového adresáře. RewriteCond - podmínka, otestujeme možnou existenci souboru či adresáře se stejným jménem. <strong>REQUEST_FILENAME</strong> je speciální proměnná právě pro modul mod_rewrite. No a RewriteRule je pouze regulární výraz, první v pořadí je výsledná url, druhý výraz je skutečná url, kterou budeme podstrkávat.</p>
<p><strong>Nejčastější problémy</strong> při použití mod_rewrite jsou dva: nefungují styly, nenačtou se obrázky. K vyřešení můžeme použít element <strong>&lt;base&gt;</strong>, nebo absolutní odkazy. Jak celé i s http, tak pouze absolutní cesty v rámci vlastního webu začínající lomítkem. Pokud ani jedno nepomůže, problém hledejte v samotném .htaccessu. Pokud zapomenete otestovat možnost existence souboru / složky, styly a obrázky se Vám nemusí vůbec načíst.</p>
<p>Jestli si myslíte, že musíte používat adresy ve tvaru /?page=neco abyste nebyli ochuzeni o pěknou adresářovou strukturu, tak Vás rád vyvedu z omylu: pomocí následujícího přepisu můžeme podstrčit pěknou url i souborům s koncovkou *.php:</p>
<pre><code><span class="codecomment italic"># clanek.php =&gt; /clanek/</span>

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]

<span class="red">RewriteCond %{REQUEST_URI} !.[[:alnum:]]&plus;$
RewriteRule ^(.&plus;[^/])$ /$1/ [R=301] </span>
</code></pre>
<p>Tento přepis ale není příliš propracovaný: pokud zadáme adresu bez lomítka, vyskočí chyba 404. To vyřešíme velice snadno přidáním posledních dvou řádků, které automaticky doplní lomítko na konec adresy. Při zadání adresy bez lomítka proběhne přesměrování na správnou url, kde už se načte požadovaný soubor. Pokud samotný soubor pracuje dále s proměnnými, adresy mohou vypadat následovně: <em>/clanek.php?id=20 &gt; /clanek/?id=20</em></p>
<p>A že je vždy potřeba dynamických stránek pro mod_rewrite? Výše uvedené lze použít i u obyčejných statických stránek s příponou *.html. Stačí změnit jeden řádek:</p>
<pre><code><span class="codecomment italic"># soubor.html =&gt; /soubor/</span>

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.<strong class="red">html</strong> [L]

RewriteCond %{REQUEST_URI} !.[[:alnum:]]&plus;$
RewriteRule ^(.&plus;[^/])$ /$1/ [R=301]
</code></pre>
<p>Automatické přidání lomítka na konec adresy pak můžeme použít i samostatně: <small>(doporučuji)</small></p>
<pre><code>RewriteCond %{REQUEST_URI} !.[[:alnum:]]&plus;$
RewriteRule ^(.&plus;[^/])$ /$1/ [R=301]
</code></pre>
<p>Na závěr se ještě podíváme na příznaky. To jsou ta písmenka v závorce za každým z pravidel:</p>
<h2>Příznaky (flags)</h2>
<p>V některých přepisech je nutné použít takzvané příznaky (flags), které mají různé významy. Uvedu zde nejpoužívanější: </p>
<table>
<tbody>
<tr>
<td valign="top"><strong>[L]</strong></td>
<td>(last)</td>
<td>Poslední pravidlo - další překlad adresy již nebude požadován. pokud se adresa jednou přeloží, nebude se již zkoušet v dalších podmínkách.</td>
</tr>
<tr>
<td><strong>[R]</strong></td>
<td>(redirect)  </td>
<td>Dočasné přesměrování</td>
</tr>
<tr>
<td><strong>[R=301]  </strong></td>
<td> </td>
<td>Trvalé přesměrování</td>
</tr>
<tr>
<td><strong>[QSA] </strong></td>
<td>(query string append)  </td>
<td>Do výsledků se přidá i celý řetězec za otazníkem původního požadavku.</td>
</tr>
<tr>
<td valign="top"><strong>[NC]</strong></td>
<td>(no-case)  </td>
<td>Nerozlišovat velikost písmen - dobré například při přesměrování na jiný web.</td>
</tr>
</tbody>
</table>]]></content:encoded>
			<image>
    				<url>https://mike.treba.cz/img/2023/renewed/server-room-2.jpg</url>
			</image>
		</item>
		
		
		<item>
			<title>mod_rewrite a hezké url</title>
			<link>https://mike.treba.cz/mod_rewrite-a-hezke-url/</link>
			<pubDate>Sun, 22 Apr 2007 15:54:07 +1100</pubDate> 
			<comments>https://mike.treba.cz/mod_rewrite-a-hezke-url/#comments</comments>
			<dc:creator></dc:creator>
			<description><![CDATA[<p>Často vyhledávané slovní spojení na internetu - "<em>Jak na hezké url?</em>" Vyhledávače Vám najdou spoustu hesel, ale jak dojít k opravdu funkčnímu řešení? Sám jsem odpovědi na tohle téma mnohokrát vyhledával, ale málokdy jsem našel skutečné řešení. Odpovědi se mi vždy dostalo až na diskusních fórech: <a href="http://diskuse.jakpsatweb.cz/" target="_blank">diskuse.jakpsatweb.cz</a>, <a href="http://www.jaknaweb.com/forum.php?f=1" target="_blank">jaknaweb.com</a>, <a href="http://webzdarma.cz/forum/" target="_blank">webzdarma.cz/forum</a> Většina článků se totiž věnuje buď základní syntaxi .htaccessu, nebo 100x omílanému tématu vlastních chybovek. </p>]]></description>   
			<guid isPermaLink="false">https://mike.treba.cz/mod_rewrite-a-hezke-url/</guid>
			<content:encoded><![CDATA[<p>Často vyhledávané slovní spojení na internetu - "<em>Jak na hezké url?</em>" Vyhledávače Vám najdou spoustu hesel, ale jak dojít k opravdu funkčnímu řešení? Sám jsem odpovědi na tohle téma mnohokrát vyhledával, ale málokdy jsem našel skutečné řešení. Odpovědi se mi vždy dostalo až na diskusních fórech: <a href="http://diskuse.jakpsatweb.cz/" target="_blank">diskuse.jakpsatweb.cz</a>, <a href="http://www.jaknaweb.com/forum.php?f=1" target="_blank">jaknaweb.com</a>, <a href="http://webzdarma.cz/forum/" target="_blank">webzdarma.cz/forum</a> Většina článků se totiž věnuje buď základní syntaxi .htaccessu, nebo 100x omílanému tématu vlastních chybovek. </p> <p>V tomto článku nebudu popisovat žádný návod na práci se souborem .htaccess, ale nabídnu Vám již hotová řešení, které jsem sám zkoušel, sám je také používám, takže jejich funkčnost je ověřená. Jediný problém, který může nastat je nedostatečná podpora <em>mod_rewrite</em> hostingu. Již dopředu raději upozorním, že např. na <a href="http://ic.cz/" target="_blank"><acronym title="Internet Centrum">IC.cz</acronym></a> s těmito přepisy moc nepochodíte.</p>
<p>Jako první bych uvedl základní přesměrování, na verzi adresy s nebo bez www: <br /> http://www.mujweb.cz » http://mujweb.cz</p>
<pre><code># www &gt; bez www
RewriteEngine On
Options &plus;FollowSymlinks
RewriteCond %{HTTP_HOST} ^www.mujweb.cz$
RewriteRule (.*) http://mujweb.cz/$1 [R=301,QSA,L]
</code></pre>
<pre><code># verze bez www &gt; s www
RewriteEngine On
Options &plus;FollowSymlinks
RewriteCond %{HTTP_HOST} ^mujweb.cz$
RewriteRule (.*) http://www.mujweb.cz/$1 [R=301,QSA,L]
</code></pre>
<p>Je pouze na Vás, pro kterou verzi se rozhodnete - ale je dobré si jednu zvolit. Pro Google jsou to totiž 2 rozdílné adresy a všechny zpětné odkazy by se Vám dělily.</p>
<p>Jako druhý přepis uvedu přesměrování ze subdomény na doménu. Pokud máte web např. na některém z freehostingů, tak cokoli.mujweb.wz.cz == mujweb.wz.cz. Problém je akorát v tom, pokud to "cokoli" do adresy zadáme, tak to tam také zůstane. Stačí vložit následující řádky do souboru .htaccess, a při zadání adresy jakékoli neexistující subdomény na Vašem webu proběhne přesměrování na Vaši hlavní stránku.</p>
<pre><code># subdoména &gt; doména (cokoli.mujweb.cz &gt; mujweb.cz)
RewriteEngine On
RewriteBase /
Options &plus;FollowSymlinks
RewriteCond %{HTTP_HOST} ^(.*).mujweb.cz
RewriteRule (.*) http://mujweb.cz/$1 [R=301,QSA]
</code></pre>
<p>Tohle přesměrování samozřejmě nepoužívejte v případě, že máte v .htaccessu vytvořenou subdoménu (tzn. doménu 3. řádu na placeném a doménu 4. řádu na freehostingu)</p>
<p>Subdoména se dá vytvořit následujícím zápisem... Dejme tomu, že máme na webu fotogalerii, a chceme pro ni vytvořit vlastní subdoménu. V kořenovém adresáři vytvoříme složku např. foto, kterou pak pomocí mod_rewrite převedeme na doménu 3. respektive 4. řádu. Pokud tak učiníme, musíme ale počítat s možnými problémy - přepisem vlastně složku <em>povýšíme</em> na úroveň kořenového adresáře, takže:</p>
<ol>
<li>přestanou fungovat relativní HTML odkazy</li>
<li>přestane fungovat relativní includování</li>
<li>.htaccess v rootu přestane mít na naši subdoménu vliv</li>
<li>některé další přepisy tu nebudou fungovat</li>
</ol>
<pre><code># subdoména foto.mujweb.cz
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} foto.mujweb.cz
RewriteCond %{REQUEST_URI} !foto/
RewriteRule ^(.*)$ foto/$1
</code></pre>
<p>V tuto chvíli nám budou fungovat obě adresy: http://mujweb.cz/foto a http://foto.mujweb.cz. Vy už se musíte postarat o to, aby všechny zpětné odkazy vedly na tu správnou adresu, a vyhledávače indexovali jen to, co chceme my.</p>
<p>Takže subdoménu už jsme vytvořili, ale jde to i zpět? Pokud už Vám ji vyhledávače zaindexovaly, a vy se chcete vrátit zpět k adrese se složkou za lomítkem, stačí použít tento přepis:</p>
<pre><code> # subdoména &gt; doména/složka
RewriteEngine On
RewriteBase /
Options &plus;FollowSymlinks
RewriteCond %{HTTP_HOST} ^slozka.mujweb.cz
RewriteRule (.*) http://mujweb.cz/slozka/$1 [R=301,QSA,L]
</code></pre>
<p>A na závěr už se konečně pustíme do těch "<em>cool uris</em>". V prvé řadě je ale nutné si ujasnit, jak je vlastně budeme používat: pokud se jedná pouze o klasické includování podle podmínky, není problém. Horší je to např. u výpisu z adresáři... Jelikož nám Cool uris udělají z každého souboru pomyslný adresář, musí samozřejmě platit, že ten adresář neexistuje. Pokud máme např. fotogalerii postavenou na výpisu souborů ze složky, mohli bychom si vystačit s něčím takovým: mujweb.cz/?page=prazdniny » mujweb.cz/prazdniny.html. Tento přepis se dá použít i u klasického includování, a navíc návštěvníkům vytvoří krásnou iluzi statického webu. Lze použít i jiné koncovky, které prohlížeče znají: *.php, *.php3, *.htm, *.asp, *.cgi ... a jiné.</p>
<pre><code># mujweb.cz/?promenna=neco &gt; mujweb.cz/neco.html
RewriteEngine On
RewriteRule ^(.*).html /?promenna=$1
</code></pre>
<p>Nebo jiný zápis, s podobným efektem: (změna je v přidání query stringu a v omezení regulárním výrazem)</p>
<pre><code>RewriteRule ^([A-Za-z0-9-]&plus;).(html)?$ /?promenna=$1 [L,QSA]
</code></pre>
<p>Další přepis, který je poměrně nutný při zavádění "<em>hezkých url</em>" je následující: potřebujeme se zbavit indexu.php v adrese. Takže potřebujeme přesměrování, které při zadání http://mujweb.cz/index.php návštěvníka přesměruje na http://mujweb.cz/ To samé lze použít i pro index.htm či index.html...</p>
<pre><code># mujweb.cz/index.php &gt; mujweb.cz/
RewriteEngine On
RewriteRule ^index.php$ http://mujweb.cz/$1 [R=301]
</code></pre>
<p>A teď už ty dlouho očekávaní Cool uris =o) Uvádím 3 funkční verze, jednu z nich pro jednu i dvě proměnné. Jestli na konci lomítko bude nebo ne, už určíte Vy tvarem html odkazů. Ty by měly vypadat nějak takto: a href="/neco/"</p>
<pre><code># mujweb.cz/?page=neco &gt; mujweb.cz/neco/
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]&plus;)/?$ ?page=$1
</code></pre>
<p>Pro dvě proměnné stačí k výše uvedenému přepisu přidat následující řádky:</p>
<pre><code># mujweb.cz/?page=neco&amp;stranka=druha &gt; mujweb.cz/neco/druha
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]&plus;)/([^/]&plus;)?/?$ ?page=$1&amp;stranka=$2
</code></pre>
<p>Alternativní možnost pro jednu proměnnou:</p>
<pre><code># mujweb.cz/?page=neco &gt; mujweb.cz/neco/ (jiná možnost)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /?page=$1 [L]
</code></pre>
<p>A třetí možnost zápisu pro jednu proměnnou:</p>
<pre><code># mujweb.cz/?page=neco &gt; mujweb.cz/neco/ (zase jiná možnost)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-\_]&plus;)/?$ ?page=$1 [L]
</code></pre>
<p>Cool uris nám udělají z každého souboru adresář: takže se opět může stát, že některé HTML odkazy přestanou fungovat: v takovém případě stačí každý   a href="/index.php", link href="/style.css", img src="/obrazky/picture.jpg" začít lomítkem. Nezapomeňte také na to, že při přepisu pro více proměnných musíte uvést samostatně přepis pro proměnnou každého řádu.</p>
<p>To by bylo tak asi vše, užívejte si své hezké url. Zasloužíte si je ;-)</p>]]></content:encoded>
			<image>
    				<url>https://mike.treba.cz/img/2023/renewed/server-room-3.jpg</url>
			</image>
		</item>
		
	
</channel>
</rss>