Hướng dẫn nginx remove html - nginx loại bỏ html
Giải pháp "Chén Thánh" để loại bỏ ".html" trong nginx:Câu trả lời cập nhật: Câu hỏi này đã khơi gợi sự tò mò của tôi và tôi đã tiếp tục tìm kiếm sâu hơn, sâu sắc hơn cho một giải pháp "Chén Thánh" cho Show Tuy nhiên, tôi sẽ đưa ra một ví dụ và giải thích cách nó hoạt động. Đây là mã:
Những gì đang xảy ra ở đây là một cách sử dụng khá khéo léo của Chỉ thị Từ các tài liệu, vì tôi phải mất một thời gian để tìm ra
Cả Regex đều kiểm tra sự tồn tại của các yêu cầu .html không mong muốn và vệ sinh hiệu quả URI để nó không bao gồm phần mở rộng. Sau đó, bằng cách sử dụng một câu lệnh Phần hay nhất về điều này, như tác giả ban đầu CNST giải thích, đó là
Không giống như các bản viết lại, hoạt động theo bất kỳ yêu cầu 1), giải pháp này chỉ hoạt động trên URI bên ngoài có thể nhìn thấy cho người dùng.any .html request (including the invisible internal redirect to 1), this solution only operates on external URIs that are visible to the user."Try_Files" làm gì?Bạn vẫn sẽ cần chỉ thị 2, vì nếu không Nginx sẽ không biết phải làm gì với các URI không có mở rộng mới được vệ sinh. Chỉ thị 2 được hiển thị ở trên trước tiên sẽ tự thử URL mới, sau đó thử nó với tiện ích mở rộng ".html", sau đó thử nó dưới dạng tên thư mục.Các tài liệu nginx cũng giải thích cách chỉ thị 2 mặc định hoạt động. Chỉ thị mặc định 2 được đặt hàng khác với ví dụ trên nên lời giải thích dưới đây không hoàn toàn xếp hàng:
Cập nhật: Regex làm gì?Câu trả lời trên chạm vào việc sử dụng các biểu thức thường xuyên, nhưng đây là một lời giải thích cụ thể hơn cho những người vẫn còn tò mò. Biểu thức chính quy sau (Regex) được sử dụng:
Điều này bị phá vỡ như: 9: Cho biết bắt đầu dòng. 0: Kết hợp nhân vật "/" theo nghĩa đen. Tiếng chém về phía trước không cần phải thoát ra trong Nginx. 1: Nhóm bắt giữ: Kết hợp bất kỳ ký tự nào một số lần không giới hạn 2: Kết hợp nhân vật "." theo đúng nghĩa đen. Điều này phải được trốn thoát với một dấu gạch chéo ngược.
3: Kết hợp chuỗi "HTML" theo nghĩa đen.Nhóm chụp 1 là phần chứa phần không-". HTML" của URL. Điều này sau này có thể được tham chiếu với biến $1 . Nginx sau đó được cấu hình để thử lại yêu cầu ( 6) và Chỉ thị 2 Đưa lại phần mở rộng ".html" để tệp có thể được định vị.Cập nhật: Giữ lại chuỗi truy vấnĐể giữ lại các chuỗi truy vấn và các đối số được chuyển đến trang
Điều này sẽ cho phép các yêu cầu như Lưu ý rằng đây được coi là cách sử dụng an toàn của chỉ thị `if`.Từ trang nginx nếu là xấu xa:
Ngoài ra, lưu ý rằng bạn có thể trao đổi '302' chuyển hướng cho '301'.Chuyển hướng |