php - 如何修复重写指令后下载 PHP 文件的 Nginx 配置?
问题描述
这是我的 nginx conf 的摘录:
location / {
try_files $uri $uri/ /index.php$is_args$args @no-dot-php;
autoindex on;
}
location ~ \.php$ {
internal;
try_files $uri =404;
include snippets/fastcgi-php.conf;
fastcgi_pass php_upstream;
}
location @no-dot-php {
rewrite ^(.*)$ /$1.php last;
}
我想使用一个无扩展的 php 指令,它工作正常。我补充internal;
说,如果您将 .php 添加到 url,它会抛出 404,这很有效。
如果 url 是https://example.com/view-task?act=view&id=2
它正确显示页面。
现在这是我的问题。如果没有 url 参数,php 文件将被下载而不是被渲染。例如:https://example.com/manage-tasks
它将下载“管理任务”的 php 文件。
添加一个虚拟参数可以解决问题,但这真的很奇怪。前任:https://example.com/manage-tasks?dummy=1
有人可以帮我解决这个问题吗?
解决方案
解决方案:
术语 /index.php$is_args$args 导致了问题 - 删除它。
由理查德史密斯提供