tôi đang cố gắng để tạo ra một chuỗi url mà làm việc như thế này:url mã hóa phía trước dấu gạch chéo phá ứng dụng CodeIgniter tôi
/app/process/example.com/index.html
nên nói cách khác,
/app/process/$URL
tôi sau đó lấy url với
$this->uri->segment(3);
dấu gạch chéo chuyển tiếp trong URL dĩ nhiên sẽ là vấn đề khi truy cập phân đoạn uri, vì vậy tôi sẽ đi ahea d và url mã hóa phần URL:
/app/process/example.com%2Findex.html
.. nhưng bây giờ tôi chỉ nhận được 404 nói ...
Not Found
The requested URL /app/process/example.com/index.html was not found on this server.
dường như mã hóa url của tôi về phía trước chém vỡ URI phân tích cú pháp của CI.
tôi có thể làm gì để khắc phục sự cố này?
này là đúng. Tuy nhiên ngay cả khi cố định bạn có thể gặp vấn đề, như tiêu chuẩn CGI định nghĩa PATH_INFO yêu cầu các chuỗi đi qua một vòng giải mã URL, có thể phá vỡ dấu gạch chéo. Trên Apache chỉ, bạn có thể sử dụng REQUEST_URI thay vì không bị điều này ... dunno nếu CI có thể sử dụng tho đó. – bobince
Tôi vừa khắc phục sự cố này trên một trang web. Đây là một chút của một hack, nhưng nó đã hoàn thành công việc: Tôi double urlencoded URL. Bằng cách đó, urldecode của REQUEST_URI không hoàn nguyên/quá sớm. –
Trên thực tế, những gì bạn muốn có lẽ là 'AllowEncodedSlashes NoDecode' – celwell