try_files 用于多个 grav 安装的指令

try_files directive for multiple grav installations

一开始我把grav安装到nginx服务器的子目录下,运行正常:cadoankitovua.com/blog

配置文件:

server {
    listen 80;
    server_name cadoankitovua.com www.cadoankitovua.com *.cadoankitovua.com;
    root /home/grav/web/public/;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /blog/index.php?_url=$uri&$query_string;
    }
    location ~ \.php$ {
        include /opt/local/etc/nginx/fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;
    }
}

然后,我将 grav 的相同副本安装到 /text 目录,并尝试以我所知道的许多不同方式修改 conf 文件。 None 有效。

我有两个问题:

  1. 我如何编辑 conf 文件以使 grav 在 /blog 和 /text 目录上工作?

  2. 一般来说,如果我将 grav 安装在许多子目录中,如何让许多 (>2) 个安装工作​​?

提前致谢。

我对重力一无所知,但你可以从添加一个 location /text 块开始:

server {
    listen 80;
    server_name cadoankitovua.com www.cadoankitovua.com *.cadoankitovua.com;
    root /home/grav/web/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /blog/index.php?_url=$uri&$query_string;
    }
    location /text {
        try_files $uri $uri/ /text/index.php?_url=$uri&$query_string;
    }
    location ~ \.php$ {
        include /opt/local/etc/nginx/fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;
    }
}

编辑:一般解决方案将使用带有重写语句的命名位置,例如:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+) /index.php?_url=$uri&$query_string last;
    rewrite ^ /blog/index.php?_url=$uri&$query_string last;
}