从nginx中的$ uri中删除尾部斜杠?

时间:2011-12-12 20:17:06

标签: nginx

我正在将我的网站页面缓存到静态平面文件缓存中,并尝试使用try_files指令首先从缓存中加载文件(如果存在),然后转到Web应用程序。

我基本上是想做这样的事情:

 try_files $uri $uri/ /var/www/vhosts/example.com/httpdocs/staticfilecache/$uri/index.html

在此示例中,如果用户请求example.com/products/,它将尝试staticfilecache / products / index.html我遇到的问题是$ uri已经包含一个尾部斜杠。尝试在$ uriindex.html中使用它会产生错误。

是否有任何高效/简单的方法可以始终删除/但不会在浏览器中重写地址?

2 个答案:

答案 0 :(得分:2)

你想要做的事情在很多层面都有很多问题。

  1. “/ var / www / vhosts / $ uri”无效。除非你有重复 您的整个文档根目录在staticfilecache文件夹下。
  2. Nginx拥有自己的缓存系统,并将首先自行检查 没有任何干预,只要它已被设置。
  3. 只要设置了index指令,Nginx就会自行检查索引文件。
  4. 您的代码实际上是在尝试检查staticcache 不是先说你想要的。
  5. 在磁盘上创建静态文件缓存毫无意义。 Nginx可以 同样从原始位置读取静态文件。
  6. 在任何情况下,Nginx都会为需要缓存的项目创建缓存, 通常是动态文件。这不是手工工作。
  7. 基本上,看起来你在一些网络服务器基础上有点走错了路。

答案 1 :(得分:0)

(严格地)你的问题的答案是,

rewrite ^(.*)/$ $1 break;

但我建议你不要这样做并通过@Dayo的回答。

有关缓存指导的一些有趣内容,您可以查看this out