首页 > 解决方案 > 如何修复重写指令后下载 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

有人可以帮我解决这个问题吗?

标签: phpnginxurl-rewriting

解决方案


解决方案:

术语 /index.php$is_args$args 导致了问题 - 删除它。

由理查德史密斯提供


推荐阅读