Routování na Microsoft IIS

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jarks
Člen | 94
+
0
-

Zdravím, jsem nucen umístit jeden projekt na IIS. phpinfo() píše SERVER_SOFTWARE: Microsoft-IIS/6.0.
Je to poprvé, co s tím mám co dělat a nefunguje mi routování.

V bootstrap.php je jen obyčejné

$router = $application->getRouter();

$router[] = new Route('index.php', array(
	'presenter' => 'Homepage',
	'action' => 'default',
), Route::ONE_WAY);

$router[] = new Route('<presenter>/<action>/<id>', array(
	'presenter' => 'Homepage',
	'action' => 'default',
	'id' => NULL,
));

První pokus o prosté překopírování z lokálu, kde na Apache všechno funguje, byl Smyčka při přesměrování. O tom jsem našel tady, že by snad pomohlo upravit routy, aby obsahovaly index.php.

To skutečně pomohlo, ale:

  1. URL tím pádem obsahují index.php, což velká krása není, ovšem co je horší
  2. všechny cesty to obsahují taky, a to znamená, že např. obrázky, které mají být v /document_root/images/ se pokouší načíst z /document_root/index.php/images/.

Další problém může být autoCanonicalize. Vrátil jsem bootstrap do stavu bez index.php a zkusil do BasePresenter dát public $autoCanonicalize = FALSE;. To zabralo tak, že web se načte a správné adresy se vytvoří, ale nikam nevedou – 404 nelze nalést. Vypadá to jako když si zapomenete načíst mod_rewrite.

Samozřejmě, že když použiju $router[] = new SimpleRouter('Homepage:default'); všechno funguje.

Zřejmě nemůžu čekat, že IIS se bude chovat stejně jako Apache. Můžete se prosím podělit jak routování na IIS řešíte vy? Díky předem.

22
Člen | 1478
+
0
-

mno pokud IIS6 nemá nainstalovaný nějaký modul na podporu mod_rewrite, tak můžeš použít jen simple router. Nic jinýho na tom nepojede. Osobně jsem se z IIS6 drbal asi 4 měsíce, než jsem ho definitivně vyprovodil a nasadil Apache.