Ich teste meine Zend Framework-Anwendung mit Selenium und PHPUnit. Ich habe einen Test, der eine URL öffnen muss, die eine codierte URL enthält.Zend Framework: Apache dekodierte URL statt codierte URL übergeben?
$redirectToLocation = urlencode('/myothercontroller/action'); // %2Fmyothercontroller%2Faction
$this->openAndWait('/controller/action/thenRedirectTo/' . $redirectToLocation);
Aber wenn ich meinen Test durchgeführt, der Browser versucht, die dekodiert URL öffnen:
/controller/action/thenRedirectTo//myothercontroller/action
Was soll ich tun Selen bekommen die kodierte URL zu öffnen?
Update: Eigentlich ... stellt sich heraus, Selen tut es die Aufgabe, aber es scheint, als ob Apache die URL decodiert, bevor es an die Steuerung bekommt:
The requested URL /controller/action/thenRedirectTo//myothercontroller/action was not found on this server.
Wie nehme ich dieses Problem beheben ?
Update: Hier ist eine ganze Konversation über das gleiche Problem, das ich habe: http://old.nabble.com/URL-Encoding-td18850769.html. Ihr Workaround bestand darin, die URL zu codieren, aber das ist nicht gut genug für mich. Ich kann diese Lösung kurzfristig verwenden, aber ich möchte wissen, was die eigentliche Ursache für dieses Problem ist, damit ich es beseitigen kann.
Update: Ich habe einen Kollegen, der denkt, dass es ein Problem mit der Art und Weise gibt, wie Zend Framework die Anfrage leitet. Denkst du, dass das der Fall sein könnte?
Habe das nicht versucht, aber es könnte funktionieren. Allerdings würde ich Apache lieber richtig einstellen, anstatt meinen Code zu hacken. – Andrew
Es ist ein hässlicher Workaround. Ich stimme zu, dass Apache sich nicht damit anlegen sollte. Sicherlich ist das irgendwie konfigurierbar? – mcv