Điểm:3

Ảnh hưởng của dấu chấm hỏi ở cuối (?) trong URI thay thế của lệnh viết lại nginx

lá cờ cn

Tôi đang cố gắng để hiểu sự khác biệt giữa viết lại ^/search/(.*)$ /search.php?q=$1viết lại ^/search/(.*)$ /search.php?q=$1?. Sự khác biệt là dấu vết ? trong URI thay thế.

Nếu URI yêu cầu là /search/apple?opt=123 thì URI được viết lại khác nhau như thế nào?

tôi đoán cho viết lại ^/search/(.*)$ /search.php?q=$1 nó sẽ là /search.php?q=apple&opt=123 va cho viết lại ^/search/(.*)$ /search.php?q=$1? nó sẽ là /search.php?q=apple? Nhưng tôi không chắc lắm.

lá cờ sv
Câu trả lời có thể https://serverfault.com/a/973708/102173
Logan Lee avatar
lá cờ cn
@PothiKalimuthu trường hợp của tôi phức tạp hơn một chút.
lá cờ sv
Dự đoán của bạn được đề cập trong OP là chính xác.
Logan Lee avatar
lá cờ cn
@PothiKalimuthu được rồi cảm ơn!
Điểm:2
lá cờ sv

Theo https://nginx.org/r/rewrite...

Nếu một chuỗi thay thế bao gồm các đối số yêu cầu mới, thì các đối số yêu cầu trước đó được thêm vào sau chúng. Nêu Đây la không mong muốn, đặt dấu chấm hỏi ở cuối chuỗi thay thế tránh để chúng được nối thêm

Đây là mã tối thiểu để kiểm tra kịch bản này ...

# tập tin cấu hình /etc/nginx/nginx.conf:
sự kiện {}

http {
    người phục vụ {
        viết lại ^/search/(.*)$ /search.php?q=$1 vĩnh viễn;
        # viết lại ^/search/(.*)$ /search.php?q=$1? dài hạn;
    }
}

Cờ vĩnh viễn chỉ được thêm vào để thử nghiệm. Chúng ta có thể lưu đoạn mã trên dưới dạng nginx.conf và bắt đầu Nginx. Xoăn đầu ra cho đoạn mã trên xác nhận /search/apple?opt=123 sẽ chuyển hướng đến /search.php?q=apple&opt=123.

Tương tự, đối với điều kiện viết lại thứ hai...

# tập tin cấu hình /etc/nginx/nginx.conf:
sự kiện {}

http {
    người phục vụ {
        # viết lại ^/search/(.*)$ /search.php?q=$1 vĩnh viễn;
        viết lại ^/search/(.*)$ /search.php?q=$1? dài hạn;
    }
}

Xoăn đầu ra cho đoạn mã trên xác nhận /search/apple?opt=123 sẽ chuyển hướng đến /search.php?q=apple.

Cho nên,

Nếu URI yêu cầu là /search/apple?opt=123 thì URI được viết lại khác nhau như thế nào?

Tôi đoán để viết lại ^/search/(.)$ /search.php?q=$1 nó sẽ là /search.php?q=apple&opt=123 và để viết lại ^/search/(.)$ /search.php?q=$1? nó sẽ là /search.php?q=apple? Nhưng tôi không chắc lắm.

Bạn nói đúng và đây là kết quả mong đợi.

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