如何在 nginx 上添加除 index.html 不同的文件?

如何在 nginx 上添加除 index.html 不同的文件?

所以我对此还很陌生,我有一个 nginx 服务器,正在运行一个简单的网页。我的配置sites-available是:

server {
    listen 80 default_server;

    root /var/www/mywebsite/;
    index /html/index.html;

    server_name mywebsite.com www.mywebsite.com;

    location / {
            try_files $uri $uri/ =404;
    }
}

我的index.html位于以下结构:

+------+   +----------+    
+ html +-->+index.html|    
+------+   +----------+    
       |      
       |   +--------------+
       +-->+scnd_page.html|
           +--------------+

当我访问时mywebsite.com,我看到了index.html。我该如何mywebsite.com/scnd_page/指向send_page.html

我尝试过一些东西创造

location /scnd_page { 
}

但我不确定我是否走在正确的轨道上。这个文件也可以这样做吗?

答案1

你可以使用rewrite确保发出外部重定向,以使.html用户永远看不到,并且try_files来提供实际的文件。

location / {
    rewrite     ^(/.*)\.html$   $1  redirect;
    try_files $uri $uri/index.html $uri.html =404;
}

不过,我不建议支持使用尾部斜杠/$来暗示\.html$;这种支持的逻辑有点丑陋,而且如果您尝试在所述中使用相对 URL,还会导致额外的问题scnd_page.html

答案2

您只需在位置块内配置索引参数即可:

location /html/scnd_page { index scnd_page.html; }

您也可以将 scnd_page.html 全局定义为“次要”索引:

server {

listen 80 default_server;

root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;

server_name mywebsite.com www.mywebsite.com;

location / {
        try_files $uri $uri/ =404;
}

}

相关内容