<?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>Je to divočina &#187; nette</title>
	<atom:link href="http://blog.urbasek.cz/tag/nette/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.urbasek.cz</link>
	<description>Práce na volné noze je divočina! Na tomto blogu publikuji zápisky ze svého safari. Ve zbývajícím čase programuji aplikace pro iPhone.</description>
	<lastBuildDate>Fri, 29 Nov 2013 15:44:55 +0000</lastBuildDate>
	<language>cs-CZ</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Nette, IIS a web.config</title>
		<link>http://blog.urbasek.cz/nette-iis-a-web-config/</link>
		<comments>http://blog.urbasek.cz/nette-iis-a-web-config/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 21:56:31 +0000</pubDate>
		<dc:creator><![CDATA[JIří Urbášek]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[nette]]></category>
		<category><![CDATA[Programování]]></category>

		<guid isPermaLink="false">http://blog.urbasek.cz/?p=149</guid>
		<description><![CDATA[Nette je výborný PHP framework založený na MVC struktuře obsahující spousty moderních vymožeností atd. atd. O dobrých vlastnostech Nette bych tu mohl psát ještě dlouho. Pokud na localhostu i hostingu používáte apache server podporující mod_rewrite a .htaccess, nebudete mít vůbec žádné problémy se správnou funkčností frameworku včetně routování, které je právě na mod_rewrite závislné. Mně...<br /><a class="more-link" href="http://blog.urbasek.cz/nette-iis-a-web-config/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Nette je výborný <a title="Nette PHP Framework" href="http://nettephp.com/">PHP framework</a> založený na MVC struktuře obsahující spousty moderních vymožeností atd. atd. O dobrých vlastnostech Nette bych tu mohl psát ještě dlouho. Pokud na localhostu i hostingu používáte apache server podporující mod_rewrite a .htaccess, nebudete mít vůbec žádné problémy se správnou funkčností frameworku včetně routování, které je právě na mod_rewrite závislné. Mně se však stalo, že jsem musel svůj web hostovat na Microsoft serveru IIS. Ti znalejší ví, že IIS nepodporuje sobory .htaccess a má jiný systém přepisování url. Tak jak tedy rozjet routování v Nette aplikaci běžící na IIS serveru?</p>
<p><span id="more-149"></span></p>
<h2>.htaccess vs web.config</h2>
<p>Struktura základního nette .htaccess je následující:<br />
[sourcecode]# disable directory listing<br />
Options -Indexes</p>
<p># mod_rewrite</p>
<p>RewriteEngine On<br />
#RewriteBase /</p>
<p># front controller<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]<br />
[/sourcecode]<br />
Abychom rozjeli routování a přepisování na naše velmi cool URLs musíme tento .htaccess soubor portovat na soubor web.config, který používá IIS. Výše zmíněný .htaccess převedený do web.config by měl vypadat následovně:<br />
[sourcecode language="xml"]<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<configuration><br />
<system.webServer><br />
<rewrite><br />
<rules><br />
<rule name="Nette App Rule"><br />
<match url="^\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$" ignoreCase="false" negate="true" /><br />
<conditions logicalGrouping="MatchAll"><br />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /><br />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /><br />
</conditions><br />
<action type="Rewrite" url="index.php/{R:1}"/><br />
</rule><br />
</rules><br />
</rewrite><br />
</system.webServer><br />
</configuration><br />
[/sourcecode]<br />
Tento soubor pak uložíme do stejného adresáře, kde se nachází .htaccess, často to bývá adresář <code>document_root</code>.</p>
<h2>Trochu na vysvětlenou</h2>
<p>Jak je jistě vidět, web.config je XML soubor definující všechno možné. Nastavení přepisovaných URL je v sekci <code>&lt;rewrite&gt;</code>. Tato sekce obsahuje sobor pravidel (<code>&lt;rules&gt;</code>), každé jako samostatný tag (<code>&lt;rule&gt;</code>) uvnitř kterého mohou být podmínky (<code>&lt;conditions&gt;</code>), jsou zde specifikovány URL adresy, které vyhovují danému pravidlu (<code>&lt;match&gt;</code>) a také jiné URL adresy, na které se mají vyhovující URL přepsat (<code>&lt;action&gt;</code>).</p>
<p>Samotná dokumentace pro strukturu souboru web.config nejspíš neexistuje, jelikož, jak praví můj kamarád &#8211; windowsový adminisrátor a znalec prostředí .NET &#8211; programátoři by vůbec neměli do web.config ručně zasahovat, takže Microsoft nepovažoval za nutné k tomuto souboru vytvářet dokumentaci. Pokud budete úspěšnější než já a podaří se vám něco o web.config vygooglit, nebojte se o své tipy podělit v komentáři.</p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://blog.urbasek.cz/nette-iis-a-web-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
