Přesměrování – zobrazuje <h1>Redirect</h1>

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

Zdravím,
ve vyvíjené aplikaci mám vlastní router, který řeší celé routování. Na začátku metody match mám metody, která dle vlastní DB tabulky přesměrování může přesměrovat na novou adresu. Pokud se tak stane, tak zavolám $httpResponse->redirect($url, 301);. Problém, že se při tom vyhodí laděnka s hláškou "Possible problem: you are sending a HTTP header while already having some data in output buffer. Try OutputDebugger or start session earlier."

Problém je, že to je v routeru a nikde předtím nic nevypisuju. Hlášku vyhazuje metoda checkHeaders a výstup ob_get_contentens je právě:

"<h1>Redirect</h1>

<p><a href="/core.religis.cz/bmw-10/">Please click here to continue</a>.</p>" (95)

Kus kódu, který přesměrovává:

public function match(Nette\Http\IRequest $httpRequest)
{
	$this->redirectToNewestUrl($httpRequest);
	...
}

private function redirectToNewestUrl($httpRequest)
{
	...
	$this->httpResponse->redirect($basePath.$redirection->new_url.'/'.$queryString, 301);
}

Všechny ostatní redirecty např. po odeslání formuláře apod. fungují naprosto v pohodě, problém je jen tady s tímto.

Odkaz na blue screen: http://apps.aurelia-system.cz/…ioError.html

Přehlížím něco? Díky za pomoc!

David Matějka
Moderator | 6445
+
0
-

V ladence je hezky videt, ze presmerovani provadi routing panel.

imho by router vubec nemel resit presmerovani. o to at se postara presenter, respektive automaticka kanonizace url

Morfeo21
Člen | 35
+
0
-

Jasněěěě! Špatná úvaha v přesměrování z routeru! Díky moc za nakopnutí s AutoCanonize, už to funguje parádně! :)