Tại sao việc kích hoạt bản ghi lại trong .htaccess không hoạt động?


9

Tôi muốn kích hoạt ghi nhật ký ghi lại để tôi có thể gỡ lỗi quy tắc ghi lại nhưng việc thêm các lệnh RewriteLog gây ra lỗi 500.

Thông tin phiên bản:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

nội dung của .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Trong nhật ký lỗi tôi thấy:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

Câu trả lời:


14

Ngoài việc quên rằng việc ghi nhật ký không thể được cấu hình trong .htaccesscác tệp, đây cũng là một vấn đề về phiên bản Apache. Lệnh RewriteLog đã được thay thế trong các phiên bản mới hơn và thêm phần sau vào cấu hình Virtualhost đã kích hoạt nhật ký ghi lại cho tôi:

LogLevel alert rewrite:trace3 (can be increased to trace8)

Từ hướng dẫn:

Những người quen thuộc với các phiên bản trước của mod_rewrite sẽ không nghi ngờ gì khi tìm kiếm các lệnh RewriteLog và RewriteLogLevel. Chức năng này đã được thay thế hoàn toàn bởi cấu hình ghi nhật ký trên mỗi mô-đun mới được đề cập ở trên.

Để lọc các thông báo này trong nhật ký lỗi, bạn có thể thực hiện một số việc như:

tail -f error_log|fgrep '[rewrite:'

Câu hỏi của bạn ban đầu được gắn thẻ với apache-2.2 phải không? và tôi có thể đã bỏ qua phiên bản trong chính câu hỏi. Cũng phát hiện ra.
HBruijn 27/2/2015

Trong trường hợp điều này giúp được bất cứ ai, vấn đề của tôi là tôi đã cho phép đăng nhập vào Vhost cho cổng 80 nhưng không phải là 443. Tôi đang sử dụng HTTPS, vì vậy việc đăng nhập của tôi không hoạt động. Mất một lúc tôi mới phát hiện ra sai lầm ngu ngốc đó :(
BrianVPS

Tôi muốn thêm rằng bạn phải mod_log_debugkích hoạt ...
thoni56

4

Tôi không thể giúp lặp lại chính mình:

Hầu hết những người sử dụng .htaccess và hỏi về nó trên ServerFault không nên sử dụng .htaccess ngay từ đầu vì đó là giải pháp người dùng cuối không bao giờ dành cho quản trị viên:

Bạn nên tránh sử dụng hoàn toàn các tệp .htaccess nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính httpd. Việc sử dụng .htaccesscác tệp làm chậm máy chủ Apache http của bạn. Bất kỳ lệnh nào bạn có thể đưa vào tệp .htaccess đều được đặt tốt hơn trong khối Thư mục, vì nó sẽ có tác dụng tương tự với hiệu suất tốt hơn.
Nguồn: Hướng dẫn sử dụng Apache

Rõ ràng hầu hết những người xuất bản cấu hình của họ dường như là các lập trình viên sùng bái hàng hóa muốn sao chép các tập tin .htaccess một cách mù quáng mà không hiểu lý do.

Vấn đề của bạn là một ví dụ điển hình: lệnh RewriteLogchỉ có hiệu lực trong ngữ cảnh cấu hình máy chủ hoặc máy chủ ảo ...

Điều đó có nghĩa là nó không được phép trong một .htaccesstập tin!


4
Tìm kiếm nhật ký là chính xác những gì một người muốn học, không sao chép, sẽ làm. Có vẻ như Apache đã thiết lập một trò chơi cổ điển-22: Bạn chỉ nên sử dụng .htaccess nếu bạn không thể truy cập vào máy chủ gốc. Nhưng bạn chỉ có thể bật đăng nhập nếu bạn có thể truy cập vào máy chủ gốc. Nếu họ cho phép bạn thực hiện tất cả việc viết lại này trong .htaccess, họ sẽ cho phép bạn đăng nhập những gì nó đang làm để bạn không phải dựa vào bản sao ngẫu nhiên và dán / dùng thử và lỗi.
Mark Berry

5
Một số ứng dụng như Wordpress tạo các tệp .htaccess cần được gỡ lỗi. Điều này dường như là trường hợp ở đây. Ghi nhật ký từ tệp .htaccess là bước đầu tiên hợp lý khi bạn đang cố gắng tìm ra các biểu thức chính quy khó hiểu của người khác.
KeithL
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.