Apr 16 2008
Apache 2: %2F a %5C v URL – “404 Not Found”
Výchozí nastavení direktivy AllowEncodedSlashes je v Apache 2 nastaveno dle oficiální dokumentace na Off. To způsobí, že v případě že se v URL objeví %2F, tedy “enkódovaný” znak / (případně %5C pro ) Apache hodí výchozí chybovou hlášku 404 Not Found přičemž tato chyba nezohlední ani vlastní stránky 404 a vždy se zobrazuje výchozí hláška Apache.
AllowEncodedSlashes On
Řešením je tedy zařazením direktivy AllowEncodedSlashes do globální konfigurace serveru nebo konfigurace virtuálního severu.
<VirtualHost *:80>
AllowEncodedSlashes On
</VirtualHost>
Chyba se může projevit například při použití Zend_View_Url_Helper při sestavovaní URL adresy na základě dat z formuláře:
$this->view->url(array('controller' => 'firmy', 'action' => 'hledat'),
null, array('mesto' => $this->getRequest()->getParam('mesto')));
vygeneruje adresu, v případě zadání do položky formuláře “Praha/Brno” vypadající přibližně takto:
/firmy/hledat/mesto/Praha%2fBrno
Tento problém se neprojeví, pokud se při vyhledávání používá QUERY_STRING, tedy v URL jako je tato:
http://framework.zend.com/search?query=Praha%2FBrno
Comments Off
