Điểm:0

Nối tham số URL để yêu cầu URI bằng Nginx

lá cờ ng

Tôi đang cố nối các tham số URL vào URI yêu cầu cụ thể trong khối máy chủ.

Đây là những gì tôi có cho đến nay:

nếu ( $request_uri = "/testing/signup" ) {
    viết lại ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 cuối cùng;
}

địa điểm /thử nghiệm/ {
    try_files $uri $uri/ /testing/index.php;
}

Tuy nhiên, điều này chỉ hoạt động khi URI yêu cầu ban đầu không có bất kỳ tham số URL riêng nào (ví dụ: www.example.com/testing/signup?abc=hello) Tôi muốn giữ lại thông số URL ban đầu và thêm thông số của riêng tôi.

Tôi đã thử thay đổi regex thành if ( $request_uri ~* "^/testing/signup" ) { nhưng điều này gây ra một vòng lặp.

Có ai giúp được không?

**** CẬP NHẬT ****

Tôi đã cập nhật để thử điều này:

địa điểm /thử nghiệm/ {
    viết lại ^/testing/signup$ /testing/signup?org=1231564 break;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

Điều này không vượt qua các tham số URL nhưng khi kiểm tra nhật ký có thể thấy rằng cả tham số URL hiện có và tham số URL mới đều nằm trong biến args.Nhưng làm cách nào để đưa những thứ này vào yêu cầu GET để máy chủ có thể xử lý chúng?

03/08/2021 02:27:07 [thông báo] 3202#3202: *27 "^/testing/signup$" khớp với "/testing/signup", máy khách: 146.75.168.54, máy chủ: example.com, yêu cầu: " NHẬN /testing/signup?id=1 HTTP/2.0", máy chủ lưu trữ: "www.example.com"
2021/08/03 02:27:07 [thông báo] 3202#3202: *27 dữ liệu được viết lại: "/testing/signup", args: "org=1231564&id=1", máy khách: 146.75.168.54, máy chủ: example.com , yêu cầu: "NHẬN /testing/signup?id=1 HTTP/2.0", máy chủ lưu trữ: "www.example.com"
lá cờ sv
Chào mừng đến với ServerFault. Bạn phải sử dụng `$uri` trong điều kiện `if`. Nhân tiện, `$request_uri` cũng chứa các đối số. Đó là lý do tại sao mã của bạn không hoạt động nếu yêu cầu chứa các tham số riêng của nó, chẳng hạn như `www.example.com/testing/signup?abc=hello`. Nói chung, các tham số ban đầu được thêm vào cuối khi chúng tôi cố gắng thêm các tham số của riêng mình.
Điểm:1
lá cờ sv

Chào mừng đến với ServerFault.

biến request_uri chứa "URI yêu cầu ban đầu đầy đủ (có đối số)". Đó là lý do tại sao yêu cầu có tham số hiện có không hoạt động đối với mã gốc. Thay vào đó, chúng ta có thể sử dụng nước tiểu đó là bình thường hóa. Vì vậy, đoạn mã sau sẽ hoạt động ...

nếu ( $uri = "/testing/signup") {
    viết lại ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 cuối cùng;
}

địa điểm /thử nghiệm/ {
    try_files $uri $uri/ /testing/index.php;
}

Xin lưu ý rằng các thông số ban đầu được thêm vào các thông số được thêm thủ công của chúng tôi. Vì vậy, đối với một yêu cầu như www.example.com/testing/signup?abc=hello, URI được viết lại thành www.example.com/testing/signup?org=7689879&type_id=65454&abc=hello.

Michael Hampton avatar
lá cờ cz
Điều này sẽ làm việc hoàn hảo. Tất nhiên, nó cũng sẽ dẫn đến một vòng lặp chuyển hướng vô hạn vì anh ta đã chuyển hướng trở lại cùng một đường dẫn URL. Nhưng đó là một câu hỏi hoàn toàn khác.
Neil Simpson avatar
lá cờ ng
Vâng đó là vấn đề, tôi tiếp tục nhận được vào một vòng lặp. Vì vậy, có một giải pháp sẽ không gây ra một vòng lặp?
lá cờ sv
Đó là một câu hỏi khác. Vui lòng tạo một câu hỏi khác và đăng cấu hình đầy đủ để xem xét vấn đề về vòng lặp vô hạn.
Neil Simpson avatar
lá cờ ng
Không thực sự là một câu hỏi khác, vì vậy nó sẽ bị chặn. Vấn đề về vòng lặp nằm trong câu hỏi ban đầu và giải pháp gây ra vòng lặp không thực sự là giải pháp. Giải pháp của bạn không hoạt động @pothi-kalimuthu

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