我正在尝试重定向看起来像这样的链接:
http://example.com/dev/some_project
到他们的实际位置:
http://example.com/dev/some_project/some_project.php
为了达到这个目的,我提出了以下规则集:
location / {
try_files $uri $uri/ @folderless-php;
index index.php index.html index.htm;
}
location @folderless-php {
rewrite ^(.*)$ "${uri}/${basename}.php";
}
然而,由于某种原因,这只会调用内部服务器错误。
所以我尝试将其更改为:
location / {
set $folderless "${uri}/${basename}.php";
try_files $uri $uri/ $folderless;
index index.php index.html index.htm;
}
这似乎与curl
一起使用,但是当我在任何浏览器中尝试这个时,我只是被允许下载我试图访问的文件,令我惊讶。
导致这种行为的原因是什么?有没有办法实现我想要做的事情?
答案 0 :(得分:0)
由于您没有告诉Nginx如何处理PHP文件,因此您正在下载。您需要将fast-cgi参数设置为:
location ~ \.php$ {
fastcgi_read_timeout 60000;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site$fastcgi_script_name;
include fastcgi_params;
}