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
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)