2011-11-22 28 views
7

Đó là một ảnh dài, nhưng tôi hy vọng sẽ tìm được cách giải quyết đơn giản cho một lỗi kỳ quái chỉ hiển thị khi chuỗi truy vấn bị bỏ qua/phỏng đoán bởi ứng dụng.mod_rewrite chỉ trên GET

Trước khi tôi đào sâu vào hàng nghìn dòng javascript của bên thứ ba được rút gọn, tôi muốn tìm hiểu xem tôi có thể tự động áp dụng chuỗi truy vấn bằng cách sử dụng mod_rewrite hay không.

RewriteRule ^index\.php$ index.php?module=Home&action=index 

Bây giờ, điều này sẽ làm việc tốt, ngoại trừ đôi khi tất cả các dữ liệu sẽ được đăng tải vì vậy tôi cần một RewriteCond vì vậy nguyên tắc sẽ chỉ nổ súng vào GET yêu cầu, và không POST yêu cầu.

Điều này có khả thi không?

Trả lời

10

Thêm điều kiện này ...

RewriteCond %{REQUEST_METHOD} !POST 

... không phù hợp với yêu cầu POST.

+0

Tôi biết nó phải giống như vậy. Tôi đào các tài liệu và đưa tay trắng ra. Tôi đánh giá cao sự giúp đỡ! –

3

Từ the docs:

  • Server-biến: Đây là những biến dạng %{ NAME_OF_VARIABLE } nơi NAME_OF_VARIABLE có thể là một chuỗi lấy từ danh sách sau đây:

    ...

kết nối & yêu cầu:
...
REQUEST_METHOD

Vì vậy, yeah. Sử dụng RewriteCond với biến máy chủ đó.

+0

Cảm ơn bạn rất nhiều! –

+1

+1 vì lý do duy nhất tôi biết câu trả lời là vì bạn đã nói với tôi một lần :) – alex

9

Tôi khuyên bạn nên rõ ràng và chỉ kích hoạt RewriteRule khi phương thức yêu cầu là GET, thay vì bất cứ khi nào nó không POST như có nhiều phương pháp khác. Vì vậy, điều kiện viết lại của bạn có thể trông giống như sau:

RewriteCond %{REQUEST_METHOD} =GET 

RewriteRule ^index\.php$ index.php?module=Home&action=index