n:href link a jeho podivné chování na IIS
- vmrosti
- Člen | 6
Zdravím lidičky,
jsem začátečník a trochu se peru s nette. Aktuálně řeším podivné
chování web.config na IIS serveru (a nebo mám špatně kód:-))
Trochu z historie: V začátku jsem měl problém vůbec web spustit a nakonec
se mi to povedlo až když jsem na serveru nastavil root přímo do složky www.
(ani úpravy web.config nepomohly tzv. web.config vypadal takto a stejně
nefungova:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="presun">
<match url=".*" />
<action type="Rewrite" url="/www/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
)
Teď mi ale přijde že právě root ze serveru do složky www mi zase dělá chaos v routeru protože ikdyž v layout.latte odkazuju v menu na presenter s rozdílným vstupem var1 a var2:
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">Promenne</a>
<ul class="dropdown-menu dropdown-menu-right mega-menu" aria-labelledby="navbarDropdown">
<a n:href="DetailProduction:show var1" class="dropdown-item">var1</a>
<a n:href="DetailProduction:show var2" class="dropdown-item">var2</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">něco dalšího zde</a>
</ul>
</li>
tak mi to i přes ErrorPresenter nebo Tracy hází chybu od serveru
HTTP Error 404.0 – Not Found
The resource you are looking for has been removed, had its name changed, or is
temporarily unavailable.
a to proto protože má za mně dost divnou cestu. Tu vypisuje jako:
Requested URL http://dbviz:80/…ction/action
Physical Path C:\inetpub\wwwroot\www\detail-production\action
Máte prosím někdo radu? A buďte shovívaví prosím. Zkouším to teprve chvíli a od html a základů PHP je to dost jinde:-D
Editoval vmrosti (25. 4. 2022 9:13)
- Pepino
- Člen | 256
@vmrosti možná to je úplně mimo ale v nějakém starším projektu jsem našel web.config pro nette jiný než máš ty. Ve složce www.
<?xml version="1.0" encoding="UTF-8"?>
<!-- IIS configuration file -->
<configuration>
<system.webServer>
<rewrite>
<rules>
<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>
<defaultDocument>
<files>
<add value="index.php" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Pak jen OT, proč používáš IIS?
Editoval Pepino (25. 4. 2022 9:22)
- vmrosti
- Člen | 6
Pepino napsal(a):
@vmrosti možná to je úplně mimo ale v nějakém starším projektu jsem našel web.config pro nette jiný než máš ty. Ve složce www.
<?xml version="1.0" encoding="UTF-8"?> <!-- IIS configuration file --> <configuration> <system.webServer> <rewrite> <rules> <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> <defaultDocument> <files> <add value="index.php" /> </files> </defaultDocument> </system.webServer> </configuration>
Pak jen OT, proč používáš IIS?
Tak co si budeme, dobrovolně takový blázen nejsem a dost problémů by to
vyřešilo. Bohužel taková už je IT politika u nás.
A k web.config – No teď je otázka zda zachovat na kořenu aplikace ten
můj a poté vložit do www ten váš (což aktuálně nefunguje a IISsku se
nelíbí duplikace add value=„index.php“ (error: Cannot add duplicate
collection entry of type ‚add‘ with unique key attribute ‚value‘ set to
‚index.php‘)
- vmrosti
- Člen | 6
Pepino napsal(a):
@vmrosti a nemáš přímo na ISS nastavený defaultDocument? Ale nevím, střílím od boku.
No právě že jak jsem psal tak mám, možná jsem v tom udělal sám
trochu chaos:-D v nastavení sítě mám Defalut Web Site s cestou
C:\inetpub\wwwroot\www (původně byla cesta jen C:\inetpub\wwwroot ale to pak
nefungovala celá aplikace takto mi alespoň aplikace startuje)
Ve složce wwwroot kde je celá aplikace včetně podsložek je web.config viz.
ten co jsem sem sdílel tzv.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="presun">
<match url=".*" />
<action type="Rewrite" url="/www/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Přidáním toho mi v IIS manageru ukazuje že je tam použita URL Rewrite (kdyby se sem dal vložit obrázek tak to sem šupnu)
Pak jsem teda ještě šoupnul do složky www ten váš web.config což se teď možná trochu bije. Ale prakticky takto funguje i htaccess něco je v kořenu a něco je ve složce www. Úplně ideální by bylo kdyby se dalo použít už toto video kde se jen importuje htaccess které vytvoří samo nette ale to bohužel nefunguje https://www.vrtak-cz.net/…te-framework. IIS nezná RewriteBase
- Pepino
- Člen | 256
@vmrosti zkus do té složky www dát. Je to to samé co jsem posílal akorát bez defaultDocument. Nebo prostě někde musíš nadefinovat aby každý request (krom existujících souborů/adresářů) šel na index.php.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<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>
- vmrosti
- Člen | 6
Pepino napsal(a):
@vmrosti zkus do té složky www dát. Je to to samé co jsem posílal akorát bez defaultDocument. Nebo prostě někde musíš nadefinovat aby každý request (krom existujících souborů/adresářů) šel na index.php.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <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>
Super toto pomohlo. Díky moc