Tôi đang cố gắng chuyển đổi một bản viết lại rất đơn giản từ phiên bản nginx trước đó sang phiên bản hiện tại trông như dưới đây:
location / {
if ( !-f $request_filename ) {
rewrite ^/([a-z]*)$ /index.php?action=$1;
rewrite ^/([a-z]*)/(.*)$ /index.php?action=$1&item=$2;
}
}
Đây là cách tôi đã nhận được. Trang chỉ mục hiển thị, nhưng bất kỳ trang nào cần được viết lại như trên, thay vào đó sẽ ném 404:
server {
listen 80 default;
root /var/www;
index index.php;
server_name _;
location / {
try_files $uri $uri/ /index.php?action=$uri&item=$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
Tôi làm gì sai ở đây?
Điều gì đang xảy ra chính xác? Một phần của vấn đề là $ uri và $ args không được mã hóa chính xác.
—
Lu-ca
404 bị ném
—
Công nghiệp
File not found.
nếu tôi sử dụng URI /page
hoặc/page/id
Điều gì xảy ra khi bạn làm chỉ
—
Lu-ca
try_files $uri $uri/ /index.php
?
Index.php hoạt động độc đáo, nhưng mọi thứ nên được viết lại đều kết thúc vào 404 '
—
Công nghiệp
Hãy thử
—
Lu-ca
try_files $uri $uri/ /index.php?$args
. Bạn sẽ có thể nhận được URL với $_SERVER['REQUEST_URI']
. $ _GET nên hoạt động bình thường.