nginx简单的uri通配符

时间:2013-02-04 03:26:32

标签: redirect path nginx

我试图做一些我认为会非常简单的事情,但事实证明这给我带来了很多麻烦。

我在nginx下有一个像这样定义的vhost

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的通配符,将用户重定向到vhost的根目录。

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

我确定它应该很简单,但我不能让它发挥作用。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望所有来自您网站的请求都由某种index文件提供,是吗?我认为这是事实,因为如果任何请求只会重新编写域名而没有任何其他路径,那么我不知道你还能想到什么。

所以,有了这样的假设,还有一个问题:你想用301 http状态代码重定向用户作为永久重定向(用户会知道) 或者只是 在您的应用内轻轻地重定向,没有任何反馈信息(用户不知道)

如果是第一个,则此重写指令应该有效,请将其粘贴到任何location块之前:

rewrite /.+ / permanent ;

如果是第二个,那么此rewrite指令应该有效,请将其粘贴到任何location块之前:

rewrite ^/.* / last;

此外,您还需要一个location块,用于路径/

location / {
   try_files index.html =404;
}

使用此locationtry_files指令,我们会说无论来到您的应用是什么都无关紧要,因为它始终必须使用我们的index.html文件或使用http状态代码返回{ {1}}(未找到错误)。

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

答案 1 :(得分:0)

我终于使用了这样的东西:

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

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