Nginx Rewrite 和 FastCGI - 下载 Php 个文件
Nginx Rewrite and FastCGI - Php files get downloaded
我已将此指令块添加到我的 Nginx 安装中
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass unix:/var/run/php5-fpm.sock;
# With php5-fpm:
include fastcgi.conf;
fastcgi_index index.php;
}
如果我联系 http://myserverip/script.php 一切都会好起来的。
我需要使用重写引擎来重写一些 URL,在这个指令块之后我添加了许多其他块,如下所示:
location = /sentmessages {
rewrite ^(.*)$ /sent_messages.php break;
}
(我为 .htaccess 规则使用了 winginx 转换器)
如果我联系 http://myserverip/sentmessages 重写进行得很好,但是 PHP 脚本被下载而不是传递给 FastCGI。
我不知道如何解决这个问题(尝试更改指令的顺序但没有成功。)
如何解决?谢谢。
搜索 Whosebug 后,解决方案是在重写规则末尾使用 "last"。
location = /sentmessages {
rewrite ^(.*)$ /sent_messages.php last;
}
我已将此指令块添加到我的 Nginx 安装中
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass unix:/var/run/php5-fpm.sock;
# With php5-fpm:
include fastcgi.conf;
fastcgi_index index.php;
}
如果我联系 http://myserverip/script.php 一切都会好起来的。 我需要使用重写引擎来重写一些 URL,在这个指令块之后我添加了许多其他块,如下所示:
location = /sentmessages {
rewrite ^(.*)$ /sent_messages.php break;
}
(我为 .htaccess 规则使用了 winginx 转换器)
如果我联系 http://myserverip/sentmessages 重写进行得很好,但是 PHP 脚本被下载而不是传递给 FastCGI。 我不知道如何解决这个问题(尝试更改指令的顺序但没有成功。)
如何解决?谢谢。
搜索 Whosebug 后,解决方案是在重写规则末尾使用 "last"。
location = /sentmessages {
rewrite ^(.*)$ /sent_messages.php last;
}