Điểm:1

Chuyển hướng Ngnix cho các thư mục con đa cấp

lá cờ ma

Tôi có URL giống như cấu trúc sau:

xyz/nội dung.html
abc/test.html
xyz/abc/test.html
xyz/abc/qwerty/test2.html

Tôi muốn chuyển hướng:

xyz/nội dung.html thành xyz/nội dung

xyz/abc/test.html thành xyz/abc/test

xyz/abc/qwerty/test2.html thành xyz/abc/qwerty/test2

Hiện tại tôi có quy tắc chuyển hướng này trong cấu hình ngnix của mình và nó đang hoạt động cho chuyển hướng thư mục cấp đầu tiên:

vị trí ~ ^/(xyz|abc).html { return 301 /$1; }

Điều này hoạt động cho cấp độ trực tiếp đầu tiên nhưng không hoạt động cho các thư mục con. Làm thế nào để đạt được điều này? Cảm ơn đã giúp đỡ.

Điểm:1
lá cờ sv

Có nhiều cách để giải quyết điều này. Đây là một cách như vậy ...

Bước đầu tiên là nắm bắt phần URI cần viết lại. Sau đó, chúng ta có thể thực hiện chuyển hướng bằng cách sử dụng một địa điểm chặn hoặc sử dụng viết lại điều kiện, tình trạng, trạng thái.

sử dụng địa điểm khối với chụp có tên...

vị trí ~ ^/(?<biến>[/a-zA-Z0-9]+)\.html$ { return 301 /$biến; }

Hoặc

vị trí ~ ^/([/a-zA-Z0-9]+)\.html$ { return 301 /$1; }

sử dụng viết lại...

viết lại ^/(?'custom_url'[/a-zA-Z0-9]+)\.html$ /$custom_url vĩnh viễn;

Nginx hỗ trợ ảnh chụp có tên sử dụng cú pháp sau:

?<name> Cú pháp tương thích với Perl 5.10, được hỗ trợ kể từ PCRE-7.0
?'name' Cú pháp tương thích với Perl 5.10, được hỗ trợ kể từ PCRE-7.0
?P<name> Cú pháp tương thích với Python, được hỗ trợ kể từ PCRE-4.0

Tham khảo: https://nginx.org/en/docs/http/server_names.html (dưới tiêu đề Tên biểu thức chính quy).

lá cờ ma
Cảm ơn Pothi đã trả lời. Tôi đã thử quy tắc vị trí mà bạn cung cấp. Nó hoạt động cho thư mục con cấp 2 (xyz/abc/test.html thành xyz/abc/test) nhưng không hoạt động cho (yz/abc/qwerty/test2.html thành xyz/abc/qwerty/test2).
lá cờ sv
Nếu bạn đã sử dụng quy tắc `vị trí`, hãy đảm bảo rằng bạn cũng có quy tắc `vị trí` mặc định, chẳng hạn như `vị trí / {}`. Đây là repo mẫu để kiểm tra tình huống trên với URL kiểm tra có sẵn (tạm thời)... https://github.com/pothi/qa-nginx/tree/main/serverfault/1070388
lá cờ ma
Cảm ơn bạn đời! Điều đó rất hữu ích. Nó đã làm việc.

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