2010-02-26 44 views
6

Tôi đang cố gắng trả lại trang 404 tùy chỉnh bằng IIS6. (Tôi có trang web chủ yếu là các trang .shtml được tạo bằng loại di động). Tôi đã thử nó theo 2 cách:Lỗi tùy chỉnh IIS 404: Mã phản hồi trả về URL 200 thay vì

1) đặt trình xử lý lỗi 404 trong IIS thành loại "tệp" với đường dẫn \ 404.html. Điều này làm việc, nhưng nó cũng có nghĩa là tôi không thể nhập tiêu đề và chân trang của trang web của tôi (do đó .shtml) Cố gắng trỏ trình xử lý lỗi 404 đến 404.shtml kết quả trong trang 404 mặc định ... tôi đoán IIS có thể 't xử lý tệp shtml trong 404.

2) đặt loại thành "URL". Điều này hoạt động rất tốt, ngoại trừ mã phản hồi không còn là 404! Số điện thoại 200.

Làm cách nào để IIS trả lời mã phản hồi 404 có nội dung trong tệp 404.shtml của tôi?

Trả lời

6

Cho rằng đó là IIS, thêm

<% Response.Status = "404 Not Found" %> 

lên đỉnh 404.shtml nên thay đổi mã phản hồi tới 404.

Tôi không phải là trên một máy cửa sổ vì vậy tôi không thể kiểm tra nó tại thời điểm này để xác minh.

Cập nhật:

cuối cùng tôi đã có thể chạy một vài thử nghiệm trên một IIS 6. Khi bạn đề cập trong một bình luận cho bài viết của tôi, một tập tin .shtml không cho phép lệnh script để chạy. Vì vậy, có ít nhất hai cách để làm việc xung quanh này:

  1. Thay vì đặt tên trang xử lý 404 tuỳ chỉnh của bạn 404.shtml, tên nó 404.asp. Người dùng sẽ không bao giờ thấy tên thật của trang để nó không gây ra bất kỳ vấn đề nào. Lưu ý rằng "Active Server Pages" phải được đặt thành 'Allowed' trong thư mục mở rộng dịch vụ Web của IIS.

  2. Sửa đổi ánh xạ tiện ích mở rộng trang cho .shtml để sử dụng asp.dll thay vì ssinc.dll. Bạn có thể làm điều này từ IIS bằng cách chọn trang web và xem Properties -> tab Home Directory -> Configuration -> tab Mappings. Lưu ý rằng đây là một giải pháp lý tưởng, vì bây giờ tất cả các tệp .shtml của bạn sẽ được xử lý bởi asp.dll. Điều này có thể khiến các trang của bạn hiển thị chậm hơn (giả sử asp.dll xử lý tệp chậm hơn ssinc.dll do độ phức tạp lớn hơn) và vi phạm principle of least privilege.

Nếu không có tùy chọn nào phù hợp với tình huống của bạn, thì vẫn có thể nhưng giải pháp không rõ ràng ngay với tôi.

+0

hmmm tôi nghĩ rằng tất cả những gì bạn có thể làm trong các tệp shtml trong IIS được bao gồm và thực thi. Tôi sẽ thử điều này vào thứ hai, cảm ơn – Joel

+0

Tôi đã tự hỏi rằng quá khi tôi đăng các đề nghị, nhưng tôi nghĩ rằng nó là đáng nói đến ít nhất. Hy vọng nó sẽ hoạt động. – lostriebo

+0

cảm ơn, tôi đã đi tuyến đường sử dụng URL /404.asp. Điều này làm việc khá tốt. Cảm ơn một lần nữa! – Joel

0

Trong Trình quản lý IIS, mở Thuộc tính của trang Web của bạn (hoặc thư mục ảo) và chuyển đến tab Lỗi tùy chỉnh. Ở đó bạn có thể đặt tệp nào được gửi trong trường hợp của từng mã lỗi, bao gồm 404.

+0

cảm ơn, đây là những gì tôi đang cố gắng mặc dù. – Joel

+0

Rất tiếc, giờ tôi đã hiểu điểm của bạn Nr 1, xin lỗi. Bằng trực giác, tôi không cho rằng các trang lỗi đó có thể là động. – Timores

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