Điểm:0

Làm cách nào để chuyển hướng người dùng nếu truy cập trực tiếp tệp hình ảnh bằng trình duyệt? [nginx]

lá cờ cn

Làm cách nào để chuyển hướng nếu người dùng cố truy cập trực tiếp các tệp hình ảnh chỉ trong trình duyệt? Tôi muốn giữ khả năng nhúng hình ảnh với <img src="...">. Làm thế nào để chuyển hướng từ

https://img.example.com/c/600x1200_90_webp/img-master/img/2022/01/03/08/04/54/95259215_p0_master1200.jpg

đến

https://example.com/detail?id=95259215

Đây là conf nginx của tôi

vị trí ~ "^/c/600x1200_90_webp/img-master/img/\d+/\d+/\d+/\d+/\d+/\d+/(?<tên tệp>.+\.(jpg|png|webp)) $" {
    trả lại 301 https://example.com/detail?id=$filename;
}

Mã không hoạt động vì nó sẽ https://example.com/detail?id=95259215_p0_master1200.jpg nhưng tôi cần nó để cắt chuỗi sau chữ số cuối cùng của tên tệp, vì vậy trong trường hợp này, hãy cắt bớt _p0_master1200.jpg. Tôi cũng không biết cách tạo nếu người dùng đang truy cập thông qua trình duyệt.

Điểm:0
lá cờ us

Biểu thức chính quy của bạn (?<tên tệp>.+\.(jpg|png|webp))$ ghi lại toàn bộ tên tệp vào biến tên tệp. Chỉ trích xuất một phần trước _ để biến, sử dụng như sau thay thế:

(?<tên tệp>[0-9]+).+(?:jpg|png|webp)$

Cái này chỉ khớp với các số cho tên tập tin biến (tôi sẽ gọi nó là image_id mô tả rõ hơn). https://regexr.com là một công cụ tốt để làm việc với các biểu thức chính quy.

Để giới hạn chỉ hiển thị cho các trình duyệt, bạn cần sử dụng mô-đun giới thiệu nginx http.

Hai cái này kết hợp lại thì cấu hình sẽ như sau:

vị trí ~ "^/c/600x1200_90_webp/img-master/img/\d+/\d+/\d+/\d+/\d+/\d+/(?<tên tệp>[0-9]+).+(?: jpg|png|webp)$" {
    tên_máy chủ hợp lệ;
    nếu ($invalid_referer = "0") {
        trả lại 301 https://example.com/detail?id=$filename;
    }
}

nginx sẽ kiểm tra giá trị HTTP Referer. Nếu nó chứa tên được chỉ định trong tên máy chủ trường, nó sẽ gửi chuyển hướng. Trường người giới thiệu được đặt bởi trình duyệt khi nó tải tài nguyên cho một trang web.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.