Các khuyến nghị từ các dự án Apache là:
Nói chung, bạn chỉ nên sử dụng các tệp .htaccess khi bạn không có quyền truy cập vào tệp cấu hình máy chủ chính. ... Một quan niệm sai lầm phổ biến là xác thực người dùng và chỉ thị mod_rewrite phải có trong .htaccess
tệp.
Vì vậy, vui lòng đặt cả AllowOverride None
và tất cả các chỉ thị khác của bạn trong httpd.conf chính (và / hoặc các phần phụ bạn Include
)
Khi Apache không được cấu hình với AllowOverride None
bạn, đã xảy ra một hình phạt hiệu suất (nhỏ), bất kể thời tiết hay không .htaccess
sử dụng bất kỳ tệp nào.
Điều này bởi vì đối với mỗi và mọi apache yêu cầu sẽ cần kiểm tra sự hiện diện của một .htaccess
tệp tiềm năng trong mọi thư mục (phụ) dẫn đến tài nguyên được yêu cầu. Ví dụ: khi một tệp được yêu cầu ra khỏi một thư mục / www / htdocs / ví dụ, apache phải tìm các tệp sau:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Và do đó, đối với mỗi tệp truy cập ra khỏi thư mục đó, có 4 quyền truy cập hệ thống tệp bổ sung, ngay cả khi không có tệp nào trong số đó xuất hiện. (Nếu AllowOveride được đặt cho /)
Cuộc gọi hệ thống được sử dụng cho chính nó ( man 2 stat
) không tốn kém và thông thường bộ đệm của hệ thống tệp được sử dụng thay vì bỏ phiếu cho đĩa thực tế, hạn chế các yêu cầu IO thực tế, nhưng vẫn có thể bổ sung, như bài viết này lập luận.
Khi một hoặc nhiều .htaccess
tệp thực sự có mặt, apache vẫn cần open
và đọc nó (kích hoạt một hoạt động đọc IO khác và thường là thao tác ghi IO để cập nhật atime
thuộc tính hệ thống tệp ) và phân tích cú pháp trước khi có thể áp dụng logic đó.
Không giống như khi các chỉ thị của bạn nằm trong chính httpd.conf
, chỉ cần apache để phân tích chúng một lần, khi khởi động, mỗi .htaccess
tệp cần được giải thích lại cho mỗi và mọi yêu cầu.
Làm thế nào đắt tiền, ngoài các hoạt động IO, phân tích tệp .htaccess phụ thuộc vào độ phức tạp của chúng.
Điều đó sẽ mất điểm chuẩn cẩn thận để xác định.