nginx 根据变量加载不同的文件

nginx 根据变量加载不同的文件

如果 landing.html 没有任何 url 参数,我想将其设置为服务器,如果包含 url 参数,则将其发送到 app.html。我认为这会起作用,但它告诉我无法尝试该块内的文件。

server {
        root /home/username/client/projects/web-apps/public;
        index landing.html index.html index.htm;

        # Make site accessible from http://test1.com/
        server_name test1.com;

        location ~ ^/(\d\d\d\d\d) {
                try_files $uri $uri/ /app.html;
        }

        location /q {
                try_files $uri $uri/ /app.html;
        }

        location /  {
                set $page 'landing';
                if ($args) {
                        set $page 'app';
                }
                try_files $uri $uri/ $page.html;
        }

        location /ad {
                try_files $uri $uri/ /app.html;
        }

        location /Location {
                try_files $uri $uri/ /landing.html;
        }  
}

答案1

您不能在 if 中使用 try_files。这可能会起作用:

location / {
    set $page 'landing';

    if ($args) {
        set $page 'app';
    }

    try_files $uri $uri/ $page.html;
}

相关内容