我是Nginx的新手,我试图将目录重定向到文件,这基本上就是我尝试做的事情:
When entering this link:
http://localhost:8889/dir
go to this link instead:
http://localhost:8889/dir/path/to/the/file/index.html
正如您所看到的,该目录是我尝试重定向到的文件路径的一部分。此外,配置文件中已有一个位置块,用于将该目录重定向到正确的位置:
location /dir {
root /opt/dir;
}
我的第一次尝试是使用重写指令,就像我在博客中看到的那样(https://jeffsebring.com/2012/nginx-301-redirects/):
if ( $request_filename ~ dir ) {
rewrite ^ http://localhost:8889/dir/path/to/the/file/index.html permanent;
}
但该页面显示它有一个重定向循环,我认为这是与旧位置块的冲突。
然后我尝试添加另一个位置块,就像我在这里看到的那样(nginx rewrite virtual directory to file):
location /dir {
rewrite ^/dir$ /dir/path/to/the/file/index.html;
}
但是在重新加载配置文件之后,Nginx告诉我已经存在一个存在相同目录的位置块。
所以我的问题是,我有什么方法可以做到这一点?或者甚至不可能?
谢谢!
答案 0 :(得分:1)
找到了解决方案。
我使用“return”返回完整的硬编码网址,而不是重写当前的网址:
location ~* /dir$ {
return http://localhost:8889/dir/path/to/the/file/index.html;
}
此重写解决方案也适用:
location ~* /dir$ {
rewrite ^/dir$ /dir/path/to/the/file/index.html;
}
我遇到的问题实际上是由缓存引起的。我实际上正在从缓存重新加载页面,所以在更改nginx配置文件后我看不到结果,我通过检查Chrome中的开发工具中的“禁用缓存”选项解决了这个问题。