因此,从本质上讲,我目前面临的问题是无法完成以下工作。
http://example.net/url.php/value1/value2/value3
我尝试了各种 try_files 方法,但似乎都没有用。上面的方法实际上就是我需要做的全部,但这是我遇到的错误:
这是我当前配置的副本。
server {
listen 80;
server_name example;
error_log /var/log/nginx/error.log;
index index.php;
root /www/example.net;
location / {
try_files $uri $uri/ /index.php =404;
}
location ~* \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
我尝试了各种教程中关于 location / 中 try_files 的多种组合,但没有一种能达到我想要的效果。我要么得到 404 错误(如果 index.php 未包含在最后,因为它找不到文件或目录),要么得到 500 错误。
2013/01/23 07:21:35 [error] 1411#0: *1 rewrite or internal redirection cycle while internally redirecting to "/testing_nginx.php/test", client: 75.182.96.115, server: subeta, request: "GET /testing_nginx.php/test HTTP/1.1", host: "166.78.101.192"
答案1
您可以使用 Nginx URL 重写。例如,可以将其添加到您的 nginx.conf。
location / {
rewrite ^/pay/(.*)/(.*)$ /pay.php?p=$1&s=$2? last;
rewrite ^/register$ /register.php? last;
location ~ \.ph[pb]$ {
#PHP FASTCGI SETTINGS
}
}