2011-02-09 46 views
13

Tôi có một lỗi đệ quy viết lại ở đâu đó trên trang web của mình mà Google Bot gây ra, nhưng tôi không thể tìm thấy url gây ra bởi vì Loglevel của tôi thấp. Tôi đã nêu lên nhưng nó đã không xảy ra một lần nữa cho đến nay.RewriteRule ủy quyền HTTP này làm gì?

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

Tất cả các Rewriterules trông đẹp với tôi và có cờ [L], ngoại trừ cột này.

Tôi hoàn toàn không thể hiểu được. Đó là từ hệ thống cửa hàng mã nguồn mở Magento.

Theo như tôi có thể nói, không có gì ngoài việc đặt biến môi trường E. Nhưng đó không phải là một cách rất ngu ngốc để làm điều đó? Bạn không nên sử dụng SetEnv nếu đó là mục tiêu?

Trả lời

7

Dòng này đang đặt biến môi trường thành giá trị của chuỗi xác thực người dùng - về cơ bản thiết lập biến thay vì giá trị không đổi. Theo như tôi biết, SetEnv và SetEnvIf chỉ cho phép bạn đặt biến môi trường thành một hằng số được xác định trước.

Biến đang được đặt thực sự là HTTP_AUTHORIZATION, chứ không phải E. Tôi đoán đây là một phần của quá trình xác thực người dùng.

+1

Bạn có thể sử dụng 'SetEnvIf' thay thế nếu bạn muốn. Trong thực tế, điều này thậm chí có thể thích hợp hơn nếu bạn có các tệp .htaccess trong các thư mục con sử dụng mod_rewrite (vì bạn có thể ghi đè xác thực của mình!). ví dụ. 'SetEnvIf Authorization. + HTTP_AUTHORIZATION = $ 0' – DocRoot

14

Symfony developers Group có câu trả lời hay cho nó. Tôi trích dẫn:

có vẻ như máy chủ của bạn đang chạy php dưới dạng fcgi, không phải là php5_module, như máy chủ cục bộ của bạn. (phpinfo - API máy chủ: CGI/FastCGI)

điểm là php5_module tự động xử lý tiêu đề HTTP_AUTHORIZATION, nhưng fcgi_module thì không.

giải pháp rất đơn giản - thêm dòng này vào .htacces của bạn trên máy chủ lưu trữ của bạn:.

RewriteRule * - [E = HTTP_AUTHORIZATION:% {HTTP: Phép}, L]

Nó làm việc cho tôi

+5

Nếu có các quy tắc viết lại khác' RewriteRule. * - [E = HTTP_AUTHORIZATION:% {HTTP: Authorization}] 'nên được thêm ** trước ** **, ** mà không có" L " Tùy chọn**. – naitsirch

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