IIS – změna root složky přes web.config
- wb2009
- Člen | 125
Zdravím,
Mám Nette aplikaci ze klasického sandboxu, bohužel naše IT nám
připravilo webový server tak, že nemám připravenou www složku. Takže mám
vlastně:
root/
-----/www
-----/app
-----/libs
…atd.
Normálně na mém hostingu bych to vyřešil dle pěkného htaccess v https://doc.nette.org/…ubleshooting,
ale teď to nevyřeším, jelikož ten server je iis tuším, že
7 a vyšší.
Je něco podobného jako htaccess i pro web.config ?
Nechce se mi to „prasit“ tak, že přesunu obsah www do rootu, určitě se s tím někdo už setkal a má řešení :)
- wb2009
- Člen | 125
Zdravím hezké URL mám, to mi jede, ono v sandoxu, je htaccess a web.config pro ty hezké URL. Akorád nevím jak to tedy přesměrovávat do www složky? Resp. něco jsem už na netu našel a zkoušel, ale bez úspěchu.
Edit našel jsem řešení, které redirectne z rootu do složky www:
<?xml version="1.0" encoding="UTF-8"?>
<!-- IIS configuration file -->
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Root Hit Redirect" stopProcessing="true">
<match url="^$" />
<action type="Redirect" url="/www/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Ale pořád to není ono protože:
v url pak bude www.domain.cz/www
Editoval wb2009 (3. 6. 2013 9:30)
- KajaNoName
- Člen | 2
Nejjednodušší cesta je vysvětlit vašemu IT, že je potřeba nastavit aplikační root do www :-). Druhá cesta by mohla vypadat nějak takto:
root/web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Root fake 1" stopProcessing="true">
<match url="(.*\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz))$" ignoreCase="false" />
<action type="Rewrite" url="www/{R:1}" />
</rule>
<rule name="Root fake 2" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<action type="Rewrite" url="www/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
root/www/web.config
<?xml version="1.0" encoding="UTF-8"?>
<!-- IIS configuration file -->
<configuration>
<system.webServer>
<rewrite>
<rules>
<remove name="Root fake 1" />
<remove name="Root fake 2" />
<rule name="Rewrite Rule 1" stopProcessing="true">
<match url="\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$" ignoreCase="false" negate="true" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Nevýhoda je v tom, že to nekontroluje, jestli url není náhodou soubor nebo složka. Snad to pomůže. Mě to na pár easy testech běželo.