Testuję moją aplikację Zend Framework przy użyciu Selenium i PHPUnit. Mam test, który musi otworzyć URL zawierający zakodowany adres URL.Zend Framework: Apache dekoduje zakodowany adres URL zamiast przekazywać zakodowany adres URL?
$redirectToLocation = urlencode('/myothercontroller/action'); // %2Fmyothercontroller%2Faction
$this->openAndWait('/controller/action/thenRedirectTo/' . $redirectToLocation);
Ale kiedy uruchomić mój test, przeglądarka próbowała otwarcie zdekodowany URL:
/controller/action/thenRedirectTo//myothercontroller/action
Co należy zrobić, aby uzyskać selen, aby otworzyć zakodowane URL?
Aktualizacja: Właściwie ... Okazuje się, selen robi to zadanie, ale wydaje się, że Apache jest dekodowanie URL zanim dotrze do regulatora:
The requested URL /controller/action/thenRedirectTo//myothercontroller/action was not found on this server.
Jak mam rozwiązać ten problem ?
Aktualizacja: Oto cała rozmowa na temat tego samego problemu, który mam: http://old.nabble.com/URL-Encoding-td18850769.html. Ich obejście polegało na zakodowaniu adresu URL w base64, ale to mi nie wystarcza. Mogę użyć tego rozwiązania w krótkim czasie, ale chcę wiedzieć, jaka jest prawdziwa przyczyna tego problemu, więc mogę go wyeliminować.
Aktualizacja: Mam współpracownika, który uważa, że może istnieć problem ze sposobem kierowania żądania przez Zend Framework. Myślisz, że tak może być?
Nie próbowałem tego, ale to może działać. Jednak wolałbym, aby Apache działał poprawnie, zamiast zhakować mój kod. – Andrew
To brzydkie rozwiązanie. Zgadzam się, że Apache nie powinien z tym mieszać. Z pewnością jest to w jakiś sposób konfigurowalne? – mcv