Routování na Microsoft IIS
- jarks
- Člen | 94
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:
- URL tím pádem obsahují
index.php
, což velká krása není, ovšem co je horší - 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.