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