Nginx 与 PHP 框架和多个 Wordpress 安装

Nginx 与 PHP 框架和多个 Wordpress 安装

我有一个带有 php5-fpm 的 nginx 服务器,托管 3 个框架。1 个 PHP 框架,2 个 wordpress。

所有内容都位于 /var/www 文件夹中,因此出于此目的

  • /var/www/website——PHP 框架
  • /var/www/blog——Wordpress
  • /var/www/blog2 Wordpress

当尝试访问博客时,所有资产(css、图像等...)都不起作用,它们会抛出 404。我也无法访问 wp-admin 页面,因为它会导致无限重定向。

这是Nginx配置文件中的相关信息。

server{
    root /var/www/website;
    index index.html index.htm index.php;

    set $php_root /var/www/website;

    location /blog {
        set $php_root /var/www/blog;

        if(!-e $request_filename){
            rewrite ^(.+)$ /index.php last;
            break;
        }
    }

    location /blog2 {
        set $php_root /var/www/blog2;

        if(!-e $request_filename){
            rewrite ^(.+)$ /index.php last;
            break;
        }
    }

    location / {
        if(!-e $request_filename){
            rewrite ^(.+)$ /index.php last;
            break;
        }
    }

    location ~ \.php$ {
        fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
    }

}

非常感谢您的任何帮助。

答案1

您的配置问题在于您仅设置了访问 PHP 文件的路径,而 nginx 仍尝试通过root指令中指定的目录访问静态资源。

alias是当您想要从不同目录提供某些 URI 时应该使用的指令。

这应该是适合您需要的配置。

server {
    root /var/www/website;
    index index.html index.htm index.php;

    try_files $url $url/ /index.php;

    location /blog {
        alias /var/www/blog;
    }

    location /blog2 {
        alias /var/www/blog2;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

相关内容