detekce URL požadavku z $_SERVER[‚REDIRECT_URL‘]

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

Při použití mod_rewrite na přepsání URL jsem přišel na toto chování:

příklad:

Klasická situace

URL požadavku (v prohlížeči) je "/url/"
mod_rewrite nepoužijeme
a PHP dostane tyto hodnoty:
$_SERVER['REQUEST_URI'] = "/url/"
$_SERVER['REDIRECT_URL'] = "/url/"

Situace s mod_rewrite

URL požadavku (v prohlížeči) je "/url/"
mod_rewrite mi přepíše tuto URL na "/url654321/"
a PHP dostane tyto hodnoty:
$_SERVER['REQUEST_URI'] = "/url/"
$_SERVER['REDIRECT_URL'] = "/url654321/"

ale Nette detektuje URL podle $_SERVER[‚REQUEST_URI‘] (který mod_rewrite) nemění, takže bere pořád původní požadavek…

příslušný kód (\Nette\Http\RequestFactory#createHttpRequest line 85):

if (isset($_SERVER['REQUEST_URI'])) { // Apache, IIS 6.0
	$requestUrl = $_SERVER['REQUEST_URI'];
}

Neměl by se požadavek spíše detekovat z $_SERVER[‚REDIRECT_URL‘] a pokud není nastaven až z $_SERVER[‚REQUEST_URI‘]? Na stejný problém jsem narazil i na fóru Zend FW, kde to potom nějak upravovali..

můj konkrétní problém jsem napsal zde: odkaz

Editoval Dalibor (30. 8. 2011 18:40)

Filip Procházka
Moderator | 4668
+
0
-

To není chyba.

Dalibor
Člen | 26
+
0
-

HosipLan napsal(a):

To není chyba.

No, dobře, ale nebylo by takové chování, jaké popisuju lepší?

Filip Procházka
Moderator | 4668
+
0
-

Ne. Přečti si mou odpověď v druhém vláknu.