我在网上查看了许多其他问题和参考资料——根据我的所有计算,我的设置应该有效,但它没有。
我用 php-fpm 安装了 nginx。如果我尝试访问 .php 文件,它会正确运行并且我会得到正确的结果。我在我的配置文件中得到了这个:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
现在,我想设置我的网络应用程序,以便/somedir/file
自动执行/somdir/file.php
,同时仍显示/somdir/file
在浏览器的地址栏中。所以我修改了我的配置以包含以下内容:
location / {
try_files $uri $uri/ $uri.php?query_string
}
这种工作,即服务器确实访问 .php 文件。然而,它并没有使用上面的现有块执行它location ~ \.php$
,而是简单地将 php 源代码作为下载内容发送到浏览器中。如果我手动将 .php 附加到请求的 URL,则执行 php。
感觉好像一旦服务器匹配try_files
到$uri.php
,它就不会在位置进行另一次传递以查看它需要对 php 文件做什么。我尝试将 php 块放在 的上方和下方location /
,但这没有区别。
如何让 php 被执行?