Tại sao điều này hoạt động:
RewriteRule (.+)/$ $1
và công việc này:
RewriteRule (.+)/$ $1 [L] #bla bla bla
nhưng điều này không hoạt động:
RewriteRule (.+)/$ $1 #bla bla bla
Tại sao điều này hoạt động:
RewriteRule (.+)/$ $1
và công việc này:
RewriteRule (.+)/$ $1 [L] #bla bla bla
nhưng điều này không hoạt động:
RewriteRule (.+)/$ $1 #bla bla bla
Câu trả lời:
Quy tắc cuối cùng không hoạt động vì các bình luận không thực sự là bình luận. Các chú thích trong htaccess phải bắt đầu bằng dấu #(phải ở đầu dòng), và không được tùy ý ở bất kỳ đâu.
Trong trường hợp thứ hai, tham số #bla bla blađược hiểu là tham số thứ 4 của RewriteRulechỉ thị, chỉ đơn giản là bỏ qua.
Trong trường hợp cuối cùng, tham số #bla bla blađược hiểu là một tham số thứ 3, trong RewriteRuletrường hợp này là nơi các cờ đi và #bla bla blakhông phải bất kỳ cờ nào mà mod_rewrite hiểu được nên bạn gặp lỗi.
#phải ở "đầu" của dòng, nhưng nó có thể được đặt trước bất kỳ khoảng trắng nào. (Quá mức) Khoảng trắng trong .htaccess bị bỏ qua và có thể được "rải" ở bất cứ đâu, kể cả ở đầu dòng. Nói cách khác, #phải là ký tự không có khoảng trắng đầu tiên trên một dòng. Tôi đã từng sai lầm khi nghĩ rằng #phải là ký tự 1, ở cột ngoài cùng bên trái!
Định dạng tệp cấu hình của Apache (trong đó có .htaccesstệp là một ví dụ) về mặt kỹ thuật không hỗ trợ nhận xét nội tuyến, chỉ nhận xét toàn dòng (tức là một dòng bắt đầu bằng a #).
Các dòng bắt đầu bằng ký tự băm "#" được coi là nhận xét và bị bỏ qua. Nhận xét có thể không được bao gồm trên một dòng sau một chỉ thị cấu hình. - Hướng dẫn sử dụng Apache 2.4 chính thức
Tuy nhiên, thật khó hiểu, mỗi mô-đun có thể phân tích cú pháp đầu vào cho các lệnh của nó theo cách mà nó thích - vì vậy hãy mod_rewritequyết định xem phải làm gì với bất kỳ dòng nào bắt đầu bằngRewriteRule
Tôi không biết chắc chắn nhưng suy đoán của tôi là điều đó mod_rewriteđang bỏ qua mọi thứ sau đó [flags], và điều đó #thực sự không cần thiết chút nào.
Tuy nhiên, đặt cược tốt nhất là luôn giữ các bình luận theo dòng riêng của họ, vì điều đó sẽ hoạt động bất kỳ chỉ thị nào bạn đang bình luận.