Điểm:1

Vị trí Nginx khớp với regex năm/tháng/ngày/*

lá cờ fm

Tôi có một số mẫu url cũ để chuyển hướng đến vị trí mới trong nginx.

Một url sạch điển hình trông giống như example.com/2021/06/13/78676.html?..

Tôi đang cố gắng khớp số chữ số trong mỗi khối như:

vị trí ~ "^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+).html" {
   viết lại ^ /archive.php?q=$1;
}

Xin vui lòng chính xác tôi đang đi sai ở đâu ..

Michael Hampton avatar
lá cờ cz
Vấn đề bạn đang gặp phải là gì?
TELA avatar
lá cờ fm
Ối! Tha thứ cho tôi. Tôi đã quên nhận xét chỉ thị 'return 404' của Certbot ở cuối tệp. Tôi đã áp dụng chuyển hướng này cho các trang không phải https. mọi thứ đều hoạt động tốt. Cảm ơn bạn
Điểm:2
lá cờ jp

Vấn đề đầu tiên là tất cả các URI Nginx bắt đầu bằng một hàng đầu /. Vì vậy, biểu thức chính quy của bạn sẽ không bao giờ khớp.

Vấn đề thứ hai là các bản chụp số bị ghi đè bất cứ khi nào một biểu thức chính quy mới được đánh giá. Vì vậy, trong cấu hình của bạn, $1 sẽ luôn trống rỗng.

Bạn có thể sử dụng một ảnh chụp có tên:

vị trí ~ "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(?<value>[0-9]+)\.html" {
    viết lại ^ /archive.php?q=$value cuối cùng;
}

Ngoài ra, đặt chụp số trong viết lại bản tường trình:

viết lại "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(?<value>[0-9]+)\.html" /archive. php?q=$1 cuối cùng;

Hoặc sử dụng một try_files bản tường trình thay vì viết lại:

vị trí ~ "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html" {
    try_files không tồn tại /archive.php?q=$1;
}
TELA avatar
lá cờ fm
Tôi cũng nhận thấy có vấn đề với tính năng chụp có tên nếu ai đó chuyển biến GET 'q' cùng với url yêu cầu như /2021/06/13/78676.html?a=1&q=asdf . Trong trường hợp đó, ngay cả giá trị được đặt tên dường như bị ghi đè bởi new $q = asdf. Bất kỳ cách giải quyết nào?
Richard Smith avatar
lá cờ jp
Nếu bạn muốn giữ lại các tham số khác (như `a=1`) thì sẽ rất phức tạp. Nếu không, hãy sử dụng dấu `?` ở cuối giá trị thay thế trong câu lệnh `viết lại` và các đối số ban đầu sẽ **không** được thêm vào. Ví dụ: `viết lại ^ /archive.php?q=$value? cuối cùng;` - xem [tài liệu này](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite).
lá cờ do
Nhân tiện, lặp lại một điểm đã thảo luận ở nơi khác, đảm bảo bạn sử dụng dấu ngoặc kép trên các chuỗi biểu thức chính quy có chứa dấu ngoặc nhọn, nếu không nó sẽ không hoạt động... cũng không cần phải kết thúc chuỗi bằng bất kỳ dấu `$` nào.

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