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

所以我相当新的,我有一个nginx服务器启动并运行到一个简单的网页。 我在sites-availableconfiguration是:

 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

我已经尝试了一些创build的东西

 location /scnd_page { } 

但我不确定我是否在正确的轨道上。 这甚至是在这个文件上完成?

您可以使用rewrite来确保发出外部redirect,以便用户永远不会看到.html ,而用try_files来提供实际的文件。

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

我不会build议支持一个尾随斜线/$暗示\.html$ ,虽然; 这种支持的逻辑会有点难看,如果你试图在所说的scnd_page.html使用相对的URL,它也会引起额外的问题。

您可以在位置块内configuration索引参数:

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; } 

}