2011-10-12 29 views
16

Tôi đã tự hỏi làm thế nào để tạo và gỡ lỗi kiểu kịch bản này có thể trở thành một chút đau đầu nếu bạn không quen viết chúng (như tôi).Làm thế nào để gỡ lỗi kịch bản viết lại htaccess

Bạn có sử dụng công cụ để tạo chúng không?

Bất kỳ mẹo nào để gỡ lỗi những gì đang diễn ra thay vì chỉ tạo cấu trúc cục bộ và xem điều gì đang xảy ra trong trình duyệt?

+0

thể trùng lặp của [Lời khuyên cho việc gỡ lỗi .htaccess viết lại quy tắc] (http://stackoverflow.com/questions/9153262/ mẹo-cho-gỡ lỗi-htaccess-viết lại-quy tắc) – Flimm

Trả lời

1

Bạn có thể đặt chỉ thị RewriteLog trong cấu hình virtualhost Nó sẽ ghi thông tin cần thiết vào tệp do bạn chỉ định.

RewriteLog "/usr/local/var/apache/logs/rewrite.log" 

Hơn nữa, sử dụng chỉ thị RewriteLogLevel để kiểm soát lượng khai thác gỗ

RewriteLogLevel 3 

read through

5
  1. Bạn có thể sử dụng bất kỳ công cụ kiểm tra regex để giúp bạn kiểm tra mẫu của bạn chống lại các URL (I đang sử dụng "The Regex Coach" - ứng dụng Windows). Điều này sẽ chỉ giúp bạn với mô hình - bạn nên đã biết logic chung/dòng chảy của cách viết lại hoạt động.

  2. Để DEBUG bạn phải có khả năng chỉnh sửa Apache tập tin cấu hình - sử dụng RewriteLogLevel 9RewriteLog /path/to/rewrite.log để xem chi tiết chính xác về những gì đang xảy ra trong URL viết lại (vì nó là một cấu hình máy chủ, bạn sẽ phải khởi động lại Apache để có đã áp dụng cấu hình máy chủ mới).

    Bạn cần mức nếu bạn muốn gỡ lỗi quy tắc có vấn đề. Mức 3 hoặc bất kỳ giá trị khá thấp nào khác sẽ chỉ cho bạn thấy tổng quan về những gì đang diễn ra mà không đi vào chi tiết.

    Không sử dụng cấp 9 trên máy chủ bận/sản xuất vì nó có thể tạo nhật ký khổng lồ trong vòng vài giây.

  3. Nếu bạn cần thực hiện chuyển hướng 301 (vĩnh viễn) - thay vì 302 trong giai đoạn thử nghiệm (cho đến khi bạn hài lòng với quy tắc và kết quả - sau đó thay đổi thành 301) như trình duyệt hiện đại làm chuyển hướng bộ nhớ cache 301 .. vì vậy bạn có thể kết thúc trong tình huống bực bội khi bạn đã thay đổi hoàn toàn quy tắc (hoặc thậm chí xóa nó) nhưng trình duyệt vẫn thực hiện chuyển hướng. Cách chữa trị duy nhất trong trường hợp này - xóa bộ nhớ cache của trình duyệt và khởi động lại.

16

Lưu ý cho người đọc: câu trả lời cũ không hoạt động nữa.

Kể từ phiên bản 2.4, Apache không còn cho phép các chỉ thị RewriteLogLevelRewriteLog. Bây giờ tất cả chúng được đóng gói với chỉ thị LogLevel đơn lẻ (xem tài liệu Log Files), hỗ trợ các cấp nhật ký dành riêng cho mô đun có tiền tố và các hằng số trace[1-8]. Để thiết lập mức cao nhất của cách đăng nhập đặc biệt cho các module viết lại, bây giờ bạn sử dụng như sau:

LogLevel warn rewrite:trace8 
+0

nơi tôi có thể wright LogLevel cảnh báo viết lại: trace8 htaccess –

+6

và có nơi để xem các bản ghi? – Umair

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