我试图做一些我认为会非常简单的事情,但事实证明这给我带来了很多麻烦。
我在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的根目录。
我尝试了很多重写语句的组合,但我没有任何工作。
我确定它应该很简单,但我不能让它发挥作用。
答案 0 :(得分:0)
如果我理解正确,您希望所有来自您网站的请求都由某种index
文件提供,是吗?我认为这是事实,因为如果任何请求只会重新编写域名而没有任何其他路径,那么我不知道你还能想到什么。
所以,有了这样的假设,还有一个问题:你想用301
http状态代码重定向用户作为永久重定向(用户会知道) 或者只是 在您的应用内轻轻地重定向,没有任何反馈信息(用户不知道)
如果是第一个,则此重写指令应该有效,请将其粘贴到任何location
块之前:
rewrite /.+ / permanent ;
如果是第二个,那么此rewrite
指令应该有效,请将其粘贴到任何location
块之前:
rewrite ^/.* / last;
此外,您还需要一个location
块,用于路径/
location / {
try_files index.html =404;
}
使用此location
和try_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;
}
}
不确定这是否是最好的方式,但工作正常,它可以满足我的需要