Điểm:4

sử dụng "viết lại" và "try_files" cùng nhau [Nginx]

lá cờ cn

Tôi đã xóa hậu tố ".php" ở cuối tệp PHP trên máy chủ Nginx bằng đoạn mã sau, nhưng lần này tôi không thể gửi một số dữ liệu đến máy chủ.

try_files $uri/ $uri.html $uri.php$is_args$query_string;

Một số liên kết trên trang web được gửi bằng Ajax và không có phần mở rộng ".php" ở cuối các liên kết này. Ví dụ; https://panel.example.com/app/controller/ajax/collect

Ví dụ: khi tôi muốn truy cập tệp "/collect" mà tôi muốn truy cập qua Ajax hoặc trực tiếp, tôi gặp lỗi "Không tìm thấy tệp". Bởi vì tôi "viết lại" bằng mã bên dưới và cung cấp một URL rõ ràng.

viết lại ^/([^/]+)/([^/]+)?$ /index.php?cmd=$1&scd=$2 cuối cùng;
viết lại ^/([^/]+)/?$ /index.php?cmd=$1 cuối cùng;

Liên kết mẫu: https://panel.example.com/[details|cat|profile]/[subPages(productID, username..)]

Do đó, các mã trên là chính xác và hoạt động, nhưng không hoạt động cùng lúc với nhau. Làm cách nào tôi có thể chạy hai mã này cùng một lúc?

Tệp vHost Nginx đầy đủ

Điểm:4
lá cờ us

Bạn có thể thử cách tiếp cận sau:

vị trí ~ ^/(?<cmd>[^/]+)/(?<scd>[^/]+) {
    try_files /index.php?cmd=$cmd&scd=$scd =404;
}

vị trí ~ ^/(?<cmd>[^/]+)/ {
    try_files /index.php?cmd=$cmd =404;
}

địa điểm / {
    try_files $uri/ $uri.html $uri.php$is_args$args;
}

Chúng tôi sử dụng thuật toán đối sánh vị trí nginx ở đây để trước tiên kiểm tra việc khớp URL với các biểu thức thông thường và sau đó thực hiện hành động thích hợp cho URL đó.

Tôi đang sử dụng ảnh chụp được đặt tên ở đây ?<cmd> để làm cho tên biến rõ ràng hơn.

Ngoài ra, các ?$ phần ở cuối biểu thức chính quy bị xóa vì nó không tạo ra sự khác biệt nào. Cả hai ?$ và khớp trống với bất kỳ chuỗi nào.

Emre6 avatar
lá cờ cn
Cảm ơn sự giúp đỡ của bạn. Thật không may, tôi gặp Lỗi 404 nhưng nếu tôi truy cập địa chỉ này, tôi không gặp bất kỳ lỗi nào; `https://panel.example.com/index?cmd=login` - [Để không làm bạn hiểu lầm, conf. Tôi đang chia sẻ nội dung](https://pastebin.com/Uk4X8dqt)
djdomi avatar
lá cờ za
không dán cấu hình không sử dụng dịch vụ nopaste

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