Tôi nghĩ rằng đây chỉ là một vấn đề bởi vì Sinatra/rack không có khái niệm về một tập tin mặc định để phục vụ nếu bạn chỉ cần đi đến /
. Trong một máy chủ web như Apache hoặc Nginx, việc này được thực hiện cho bạn và thường mặc định là index.html index.htm
(nếu tồn tại, nó sẽ được phân phát khi truy cập thư mục không có tên tệp thực tế ở cuối).
Khi mọi người nói điều này được xây dựng thành Hành khách, tôi nghĩ họ thực sự có nghĩa là nó được tích hợp vào Apache/Nginx. Apache/Nginx sẽ kiểm tra xem tệp tĩnh có tồn tại và phục vụ nó không, yêu cầu đó sẽ không bao giờ đến Rack, điều này thật tuyệt vời cho hiệu năng.
Tôi không muốn thiết lập chuyển hướng đến trang 404 vì loại vi phạm toàn bộ ý tưởng HTTP này: nên có một điểm cuối cho mọi thứ mà điểm cuối sẽ trả lại trạng thái thực của điểm cuối đó. Có nghĩa là nếu bạn truy cập /asdf
, bạn muốn máy chủ web báo cáo 404 vì đó là những gì thực sự xảy ra. Nếu bạn thực hiện chuyển hướng, bây giờ trang web của bạn đang nói "Tôi đã từng có thứ gì đó ở đây, nhưng nó đã di chuyển" và sau đó trang chuyển hướng bạn đến, mặc dù nó nói 404 trong văn bản trên trang, thực sự được báo cáo trên web máy chủ dưới dạng 200, có nghĩa là "mọi thứ đều ổn với trang này!"
Nguồn
2011-02-11 17:50:04
bầu cử cho các giải pháp đầu tiên. cũng nếu bạn sử dụng hành khách, điều này chỉ hoạt động. không yêu cầu định tuyến hoặc chuyển hướng. – rubiii
@rubii Tôi nghĩ rằng nó sẽ là giá trị đặt cách hành khách trong câu trả lời riêng của nó. Điều đó có vẻ giống như một câu trả lời đúng hơn tôi –
tôi nghĩ rằng câu trả lời của bạn là hoàn toàn tốt đẹp. tôi cá rằng JP không sử dụng hành khách. nhưng tôi sẽ đăng câu trả lời cho mọi người khác. – rubiii