Điểm:0

nginx - Cố gắng chuyển hướng đường dẫn với biến nội bộ không thành công

lá cờ cm

tôi muốn chuyển hướng yêu cầu đến một tập tin từ

/path/to/file/content?path=file.pdf

đến

/new/path/to/file/file.pdf

dưới cùng một miền.

Tôi đã thử các quy tắc viết lại đơn giản hoặc như thế này.

vị trí ~ ^/path/to/file/content?path=(.*) {
   trả về 301 /new/path/to/file/$1;
}

Thật không may, nginx không hiểu biến. Tôi đang làm gì sai? Có ai có một mẹo cho tôi, xin vui lòng? Thật không may, tôi không biết nhiều về reqex. Cảm ơn rất nhiều!

Điểm:0
lá cờ gr

Không giống như quy tắc viết lại apache cả địa điểmviết lại chỉ thị nginx hoạt động với cái gọi là bình thường hóa URI (xem địa điểm chỉ thị tài liệu để tìm hiểu ý nghĩa của nó) không bao gồm phần truy vấn. Kiểm tra xem con đường đối số truy vấn không trống và thực hiện chuyển hướng nếu URI yêu cầu khớp với mẫu của bạn bằng cách sử dụng đoạn cấu hình sau:

nếu ($arg_path) {
    viết lại ^/path/to/file/content /new/path/to/file/$arg_path? dài hạn;
}
Christian avatar
lá cờ cm
Xin chào Ivan, cảm ơn bạn rất nhiều vì câu trả lời của bạn. Tôi đã sao chép đoạn đó vào khối địa điểm / { } Nhưng sau đó nginx bỏ qua quy tắc này. Nhưng nếu tôi xóa phần if, tức là chỉ ghi và viết lại ...., thì chuyển hướng gần như hoạt động. Sau đó, trình duyệt chỉ nói /new/path/to/file/, nhưng tên tệp bị thiếu.
Ivan Shatsky avatar
lá cờ gr
Xin lỗi, tất nhiên đó là lỗi đánh máy của tôi, nó phải là `$arg_path` thay vì `$arg_file`.
Christian avatar
lá cờ cm
Tất cả đều tốt, bạn đã giúp tôi rất nhiều. Cảm ơn rất nhiều. Bây giờ câu lệnh if hoạt động. Thật không may, địa chỉ trong trình duyệt vẫn kết thúc tại /new/path/to/file/. Tên tệp bị thiếu.
Ivan Shatsky avatar
lá cờ gr
Các trình duyệt của người dùng cuối thường lưu vào bộ đệm các chuyển hướng HTTP 301 vĩnh viễn, vì vậy nó có thể được lưu trong bộ đệm URI từ cấu hình trước đó. Xóa bộ nhớ cache của trình duyệt hoặc thử từ cửa sổ ẩn danh.
Christian avatar
lá cờ cm
Xin lỗi, bạn nói đúng, tôi thật ngu ngốc. Bạn đã làm cho ngày của tôi, cảm ơn bạn rất nhiều!

Đă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.