Tôi đang thử nghiệm ứng dụng Zend Framework của mình bằng Selenium và PHPUnit. Tôi có một bài kiểm tra cần phải mở một URL có chứa một URL được mã hóa.Zend Framework: URL mã hóa giải mã Apache thay vì chuyển URL được mã hóa?
$redirectToLocation = urlencode('/myothercontroller/action'); // %2Fmyothercontroller%2Faction
$this->openAndWait('/controller/action/thenRedirectTo/' . $redirectToLocation);
Nhưng khi tôi chạy thử nghiệm của tôi, trình duyệt đã cố gắng mở URL giải mã:
/controller/action/thenRedirectTo//myothercontroller/action
Những gì tôi nên làm gì để có được selen để mở URL mã hóa?
Cập nhật: Thực ra ... Hóa ra selen đang làm công việc của nó, nhưng có vẻ như nếu Apache được giải mã URL trước khi nó được cho là điều khiển:
The requested URL /controller/action/thenRedirectTo//myothercontroller/action was not found on this server.
Làm thế nào tôi nên khắc phục vấn đề này ?
Cập nhật: Đây là toàn bộ cuộc hội thoại về cùng một vấn đề mà tôi đang gặp phải: http://old.nabble.com/URL-Encoding-td18850769.html. Cách giải quyết của họ là base64 mã hóa url, nhưng điều đó không đủ tốt cho tôi. Tôi có thể sử dụng giải pháp này trong ngắn hạn, nhưng tôi muốn biết nguyên nhân thực sự của vấn đề này là gì, vì vậy tôi có thể loại bỏ nó.
Cập nhật: Tôi có một đồng nghiệp nghĩ rằng có thể có vấn đề với cách Zend Framework định tuyến yêu cầu. Bạn có nghĩ rằng đó có thể là trường hợp?
Chưa thử điều đó, nhưng nó có thể hoạt động. Tuy nhiên, tôi muốn điều chỉnh Apache để hoạt động chính xác hơn là hack mã của tôi. – Andrew
Đó là một giải pháp xấu. Tôi đồng ý rằng Apache không nên lộn xộn với điều này. Chắc chắn đây là cấu hình bằng cách nào đó? – mcv