如何修复重写指令后下载PHP文件的Nginx配置?

时间:2019-06-25 19:37:19

标签: php nginx url-rewriting

这是我的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添加到网址中,则会抛出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

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

1 个答案:

答案 0 :(得分:0)

解决方案:

/index.php$is_args$args引起此问题-将其删除。

由Richard Smith提供