Chúng tôi có một số quy tắc mod_rewrite rất cơ bản:mod_rewrite urlencoding tham số chuỗi truy vấn đã được mã hóa - bất kỳ cách nào để vô hiệu hóa tính năng này?
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
mod_rewrite dường như để làm công việc của mình, và nếu người dùng đang truy cập:
something.swf?param=value
, nó được chuyển hướng một cách chính xác để http://www.newdomain.com/something.swf?param=value
vấn đề là trong trường hợp này:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
điều gì xảy ra cuối cùng là mod_rewrite mất nó khi nó tự tái urlencode chuỗi truy vấn param
vì vậy những gì người dùng kết thúc với là:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
chuyển hướng đến
www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
vì vậy chúng tôi kết thúc với một double-urlencoded giá trị. boourns!
Trong khi tôi hiểu rằng chúng tôi có thể thực hiện quy tắc \?(.*)
... ?$1
cho điều này, tôi nghĩ rằng phải có cách để thông báo cho mod_rewrite NOT để urlencode tham số chuỗi truy vấn ... chúng tôi muốn tránh sử dụng 2 quy tắc từ đường dẫn hợp lệ là:
something.swf (no query string)
và
something.swf?someparams...
để yea, lý tưởng ... chỉ cần nói với mod_rewrite: xin vui lòng, không urlencoding của params chuỗi truy vấn ... chỉ passthru trực tiếp đến URL mới thông qua R=302
.
doh! câu trả lời là, tham số NE. lấy làm tiếc! –
Đặt cược là. Bạn có thể cung cấp câu trả lời và đánh dấu nó như được chấp nhận không? (Tôi đoán có giới hạn thời gian để làm điều đó, nhưng hãy làm ngay khi bạn có thể xin vui lòng: P) –
yea nói rằng tôi cần 100 đại diện để trả lời câu hỏi của riêng tôi trong ít hơn 8 giờ. sẽ trả lời sau. –