2011-12-11 36 views
12

Tôi đang gặp sự cố với tham số get cùng với quy tắc ghi đè htaccess. Dưới đây là liên kết ed của urlencode() '; quy tắc viết lại tôi sử dụng để chuyển hướng đến index.php, và cuối cùng, một print_r ($ _ GET) trên index.php. Như bạn có thể thấy, các ký hiệu được tạo hình chữ nhật không phải là một phần của giá trị cho biến tĩnh, nhưng thay vào đó và trái với mong đợi của tôi được hiểu là một biến seperator. Tại sao?

ban đầu liên kết:

<a href="static/Game-Tech-%26-Arts-Lab">link</a> 

.htaccess:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L] 

index.php:

Array ([static] => Game-Tech- [-Arts-Lab] =>) 
+0

Làm thế nào các '$ _SERVER [ "QUERY_STRING"]' trông cho yêu cầu đó? Và việc viết lại không xảy ra khi bạn gọi 'index.php? Static = ...' theo cách thủ công? – mario

+0

Duyệt theo cách thủ công tới "index.php? Static = Game-Tech-% 26-Arts-Lab" hiển thị trang tốt - $ _SERVER ["QUERY_STRING"] lần đọc "[QUERY_STRING] => static = Game-Tech- & -Arts-Lab " – kontur

Trả lời

23

Ah, được rồi. Hấp dẫn. Có vẻ như có một giải pháp đặc biệt để giữ cho ký hiệu đó được thoát riêng. Sử dụng [B] flag for Rewriterules.

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B] 

Đây là vụ phải URLEncode ký tự đặc biệt khi interpolating $1 giữ chỗ. Nó chỉ hoạt động với Apache 2.2 tuy nhiên tôi tin.

Tìm thấy một vài tài liệu tham khảo:

+0

Ồ, đó là tin tức! Điều đó vừa sửa nó. Tôi sẽ phải học những cờ viết lại một số chi tiết - cảm ơn bạn đã giúp Mario! – kontur

+0

Không biết về điều đó. Nó mới. – mario

+0

Tuyệt vời - cảm ơn vì điều này! – Simeon

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