Điểm:1

NGINX Viết lại truy vấn dưới dạng đường dẫn?

lá cờ gb

Những gì tôi đang cố gắng làm:

Chuyển thành

/posts/?post={randomnumber-atoF}
hoặc
/posts?post=120430awasdfwasfw

đến

/bài viết/120430awasdfwasfw

Khối máy chủ của tôi (cho đến nay)

người phục vụ {
        nghe 80 default_server;
        lắng nghe [::]:80 default_server;
        gốc/diễn đàn;
        chỉ số index.php;
        server_name forum.example.net;
        địa điểm / {
                try_files $uri $uri/ =404;
        }
        # truyền tập lệnh PHP tới máy chủ FastCGI
        #
        vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        vị trí ~ /\.ht {
                Phủ nhận tất cả;
        }
}

Máy chủ đang nhận URL được chuyển từ một Nginx Proxy khác (một máy chủ từ xa khác). (và máy chủ này có SSL, cổng 443)

Các mục tôi đã thử:

viết lại ^/posts/index.php /posts/$arg_post vĩnh viễn;

chỉnh sửa:

xin lỗi tôi đã không nói, phần lớn truy vấn được đưa vào Chỉ mục, vì ?post là một truy vấn, vào cơ sở dữ liệu. Tôi muốn làm nó để bạn không cần truy vấn mà chỉ cần truy cập vào {post number}

lá cờ sv
Chào mừng đến với ServerFault. `if ($arg_post != "") { viết lại ^/posts/ /posts/$arg_post? dài hạn; }` có khả năng hoạt động.
Nolan O avatar
lá cờ gb
tôi đã thử mã của bạn ở trên và nó đạt 404 (nếu không tìm thấy post={post number} trong DB, nó sẽ trả về 404) Có cách nào để viết lại URL trong khi vẫn giữ /posts/?post=333 (hành động như thế nào? không có ?)
djdomi avatar
lá cờ za
sắp hiển thị như thế nào, url sẽ là gì và hiện được hiển thị, nhận xét của bạn không làm cho nó đủ rõ ràng
Nolan O avatar
lá cờ gb
PHP sẽ thấy URL như thế nào: ``` /posts?post=12345 ``` Và Người dùng cuối sẽ thấy ``` /posts/12345 ```
Điểm:0
lá cờ sv

Tiêu đề của bài đăng có thể là "chuyển đổi/viết lại đường dẫn URL thành truy vấn". Dù sao, theo chỉnh sửa và nhận xét, viết lại ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id; có thể làm việc. Không cần sử dụng dài hạn cờ cho viết lại. Nếu bạn dùng dài hạn, người dùng sẽ được chuyển hướng.

người phục vụ {
        nghe 80 default_server;
        lắng nghe [::]:80 default_server;
        gốc/diễn đàn;
        chỉ số index.php;
        server_name forum.example.net;

        viết lại ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;

        địa điểm / {
                try_files $uri $uri/ =404;
        }
        # truyền tập lệnh PHP tới máy chủ FastCGI
        #
        vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        vị trí ~ /\.ht {
                Phủ nhận tất cả;
        }
}
Nolan O avatar
lá cờ gb
apon chạy nó, tôi gặp lỗi này: ``` 2021/07/07 08:51:19 [lỗi] 244184#244184: *4 viết lại hoặc chu trình chuyển hướng nội bộ trong khi chuyển hướng nội bộ đến "/posts/index.php", máy khách: ***.***.**. ***, máy chủ: forum.example.net, yêu cầu: "NHẬN /posts/?1318131055449140129 HTTP/1.1"> 1.1", máy chủ: "192.168.0.195" ```
lá cờ sv
Lỗi của tôi. Cập nhật câu trả lời ngay bây giờ.
Nolan O avatar
lá cờ gb
có cách nào để thực hiện Viết lại chỉ khi không tìm thấy tệp không? thích nếu ``` /posts/file``` chuyển đến tệp đó, nhưng nếu ```/posts/file {mã lỗi 404}``` thì hãy thử viết lại?
lá cờ sv
Nó có thể là có thể. Vui lòng tạo một câu hỏi mới để mọi người có thể nhìn thấy câu trả lời có thể.
Nolan O avatar
lá cờ gb
thực ra, bài đăng này đã giải quyết nó cho tôi: (jusr đã thay thế `location /directory ` bằng` location /posts/ ` đăng liên kết [tại đây](https://serverfault.com/questions/767440/nginx-rewrite-rule-subfolder-404-error)

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