douhuangjie4503 2016-05-20 09:47
浏览 340
已采纳

使用nginx在子目录中时不执行PHP

When going on example.com, example.com/foo/ or example.com/foo/bar/, PHP was working great. Then I tried to modify Nginx conf to have foo.example.com pointing on example.com/foo/ (the DNS is already configured). It works, but now when I access to foo.example.com/bar/, I can download foo/bar/index.php instead of executing it.

Here is the Nginx configuration:

server {
    listen         80;
    server_name    *.example.com;
    root /var/www/html/;


    location / {
        index index.html;
    }
}

server {
    listen         80;
    server_name    foo.example.com;
    root /var/www/html/foo/;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass   web_fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

I know there are plenty of similar threads, but none of those I read worked.

  • 写回答

1条回答 默认 最新

  • dongmei8071 2016-05-20 17:46
    关注

    The first server declaration catches the request and since you don't have a PHP location block in this server declaration, Nginx just outputs the file. You need to add a PHP location block to the first server declaration.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?