Tôi đang tìm cách viết lại url với nhiều phần tử. Một chuỗi con đang được yêu cầu dưới dạng thư mục con, trong khi bất kỳ chuỗi con nào khác được yêu cầu dưới dạng thông số chuỗi truy vấn thông thường.Dấu chấm hỏi phù hợp trong quy tắc mod_rewrite regex
Ví dụ, tôi muốn viết lại url từ
http://www.mysite.com/mark/friends?page=2
để
http://www.mysite.com/friends.php?user=mark&page=2
tôi có thể thực hiện điều này với ngoại lệ của nhân vật dấu hỏi. Đây là quy tắc viết lại của tôi:
...
RewriteEngine On
RewriteBase/
RewriteRule ^([A-Za-z0-9-_]+)/friends[?]?([^/\.]+)?$ friends.php?user=$1&$2 [L]
Nếu tôi thay đổi dấu chấm hỏi cho bất kỳ ký tự nào khác thì nó hoạt động tốt. Có vẻ như vấn đề là '?' ký tự được diễn giải không chính xác khi bắt đầu chuỗi truy vấn mới.
Tôi cần chuyển bất kỳ thông số nào xuất hiện sau/người dùng/bạn bè. Làm cách nào để tôi thực hiện việc này?
Cảm ơn câu trả lời. Hoạt động thực sự tốt và tôi đang đọc sách dạy nấu ăn ngay bây giờ. – markb
Supers giải pháp nó làm việc cho tôi quá, mặc dù tôi chỉnh sửa mã để điều kiện của tôi: RewriteRule^([A-Za-z0-9 -_] +) \. Php? pindex.php? typeofpage = $ 1 [QSA, L] –