2011-06-26 37 views
35

Tôi đã in $ _SERVER và tôi phát hiện ra rằng $ _SERVER['REDIRECT_URL']$_SERVER['REQUEST_URI'] đều có cùng giá trị. Sự khác nhau giữa hai cái là gì?

Trả lời

42

REQUEST_URI là đường dẫn URI được yêu cầu và truy vấn được sử dụng trong HTTP request line. REDIRECT_URL is created by Apache khi chuyển hướng nội bộ xảy ra:

REDIRECT_ biến môi trường được tạo từ biến môi trường tồn tại trước chuyển hướng. Chúng được đổi tên bằng tiền tố REDIRECT_, tức là, HTTP_USER_AGENT trở thành REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUSREDIRECT_QUERY_STRING được đảm bảo được đặt và các tiêu đề khác sẽ chỉ được đặt nếu chúng tồn tại trước điều kiện lỗi.

Lưu ý rằng REDIRECT_URL chỉ chứa đường dẫn URI.

+3

'REDIRECT_URL' trả về url bình thường, ví dụ: '/ review', mặt khác' REQUEST_URL' trả về chuỗi truy vấn, ví dụ: '/ review? page = 4' – AlbertSamuel

+0

tuyệt vời tôi đã bị kẹt trong thời gian dài –

+0

@AlbertSamuel" 'REQUEST_URL'" - Điều đó phải là 'REQUEST_URI' (với' I'). – MrWhite

15

$_SERVER['REDIRECT_URL'] chỉ khả dụng trên một số máy chủ trong một số trường hợp. Sử dụng $_SERVER['REQUEST_URI'] để thay thế.

+2

Lưu ý rằng chúng có thể có các hành vi khác nhau, vì REQUEST_URI chứa chuỗi truy vấn! (Tôi gặp sự cố với API của mình) – Miguel

11

REQUEST_URI cũng thay đổi ký tự đặc biệt như khoảng trống thành "% 20", v.v.

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