Thêm nhận xét vào .htaccess


88

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:


142

Nhận xét trong .htaccess phải nằm trên dòng riêng của chúng , không được nối vào các câu lệnh khác.

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.


7
Đề xuất chỉnh sửa câu trả lời để nói điều gì đó như "# phải ở đầu dòng". Bất chấp, cảm ơn bạn!
user1032531

@ user1032531 Xin lỗi, đó là điều tôi muốn nói
Jon Lin

Có thể nhận xét bên trong một <IfModule> không?
Daniel Springer

Đây là điều mà tôi đã xuống hạng nhiều lần. Nó có thể lãng phí hàng giờ. Cảm ơn bạn.
Xonatron

1
Mặc dù #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!
SherylHohman

29

Đị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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.