使用 nginx try_files 下载 PHP 文件而不是执行

使用 nginx try_files 下载 PHP 文件而不是执行

我使用的是 Ubuntu 14.10、nginx 1.6.2、php 5.5.12。我有一个设置如下的网站:

server {
    root /usr/share/nginx/www/oliviataussig;
    index index.php;

    server_name oliviataussig.com www.oliviataussig.com;

    location / {
        try_files $uri $uri/ /index.php =404;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi.conf;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}

当我进入主页 (index.php) 时,它运行正常。但是,当我点击页面上的任何链接时(这是一个类似 WordPress 的 CMS),我想返回到/index.php,它确实这样做了,但index.php被下载而不是执行。我该如何解决这个问题?

答案1

正如 Hrvoje 所建议的,Wordpres ->Nginx codex 给出了大多数可能情况的示例(http://codex.wordpress.org/Nginx

对于您来说,配置文件应该如下所示:

server {
    root /usr/share/nginx/www/oliviataussig;
    index index.php;

    server_name oliviataussig.com www.oliviataussig.com;

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

    # Add trailing slash to */wp-admin requests.
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;


    # Pass all .php files onto a php-fpm/php-fcgi server.
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
        include fastcgi.conf;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}

答案2

需要清除浏览器的缓存才能看到下一行的结果。

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

相关内容