2

我正在尝试做一些我认为很简单的事情,但结果却给我带来了很多麻烦。

我在 nginx 下有一个这样定义的虚拟主机

server {

    listen 80;
    server_name test.com;
    root   /var/apps/failover/;
    location / {
                index  index.html index.htm;
            }
} 

我想要做的是所有设置了 request_uri 的请求(例如:test.com/something)将只发送到 test.com/。

我想要一种用于 uri 的通配符,它​​将用户重定向到虚拟主机的根目录。

我尝试了许多重写语句的组合,但我没有任何工作。

我确信它应该很简单,但我无法让它工作。

4

2 回答 2

0

我终于使它与这样的东西一起工作:

 server {
    listen 80;
    server_name text.com;
    root   /var/apps/failover/;
    location / {
      index index.html;
      error_page 404 =200 /index.html;
    }
 }

不确定这是否是最好的方法,但可以正常工作并且可以满足我的需要

于 2013-02-05T03:20:50.870 回答
0

如果我的理解是正确的,您希望所有进入您网站的请求都由某种index文件提供服务,是吗?我想这是事实,因为如果任何请求将被重写为仅域名而没有任何其他路径,那么我不知道您还能想到什么。

因此,有了这样的假设,还有一个问题:您是想将带有301http 状态代码的用户重定向为永久重定向(用户会知道) ,还是只是 在您的应用程序内部轻轻重定向而没有任何返回信息(用户不会知道)

如果是第一个,那么这个重写指令应该可以工作,将它粘贴在任何location块之前:

rewrite /.+ / permanent ;

如果是第二个,那么这个rewrite指令应该可以工作,将它粘贴在任何location块之前:

rewrite ^/.* / last;

您还需要一个location可以提供路径的块/

location / {
   try_files index.html =404;
}

有了这个locationtry_files指令,我们说无论你的应用程序是什么都没关系,因为它总是必须使用我们的index.html文件或返回 http 状态代码404(未找到错误)。

它会帮助你还是你正在寻找不同的东西?

于 2013-02-04T20:47:51.080 回答