2012-02-09 22 views
15

Tôi cần phải chuyển/làm biến như một phần của URL.% 2F trong ngắt URL và không tham chiếu đến tệp .php được yêu cầu

cấu trúc của tôi trông như thế này: www.domain.com/listings/page-1/city-Burnaby+South/type-Townhome/bedroom-2/bathroom-2

Trong trường hợp này, nó cuối cùng nhét xuống lists.php và mọi thứ khác ngoài nó trở thành các tham số mà kịch bản PHP của tôi phân tích cú pháp thông qua việc sử dụng $ _SERVER ['REQUEST_URI'] var.

Tuy nhiên khi một trong các biến hte trở thành "Căn hộ/Condo" và/trở thành% 2F thông qua urlencode() trong PHP khi URL được tạo, toàn bộ cuộn cảm và tôi gặp phải lỗi "Không tìm thấy".

Làm cách nào để chuyển/không vi phạm URL? Tôi đang thiếu gì? Tôi nghĩ rằng toàn bộ điểm của các urlencode() ký tự (% 2F,% 20 vv) đã có để thoát khỏi những vấn đề này.

Trả lời

30

url với % 2f/ hay % 5c\ trở lại một từ Apache cho các mục đích an ninh.

Bạn có thể sửa đổi cấu hình Apache để bật AllowEncodedSlashes On hoặc NoDecode. Hãy nhớ rằng điều này có thể giới thiệu các vấn đề bảo mật không mong muốn, mà "tính năng" này được thiết kế để giảm thiểu.

Apache docs: http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes

quyết:

Cái này đã cho tôi quá - cảm ơn cho câu hỏi

+0

Điều đó giải thích. Cám ơn rất nhiều. – jeffkee

-3

Bạn có thể không kém chỉ làm urldecode();

+0

Các URL được chuyển và giải mã sử dụng urldecode (). Vấn đề của tôi là nó thậm chí không trả về trang PHP - nó trả về 404 ngay sau khi có một% 2F được bao gồm trong yêu cầu ở đâu đó. – jeffkee

Các vấn đề liên quan