首页 文章

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

提问于
浏览
2

我正在将我的网站页面缓存到静态平面文件缓存中,并尝试使用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

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

    • "/var/www/vhosts/$uri"无效 . 除非您在staticfilecache文件夹下复制了整个文档根目录 .

    • Nginx拥有自己的缓存系统,只要它已经设置,它将首先自行检查,无需任何干预 .

    • 只要设置了索引指令,Nginx就会自行检查索引文件 .

    • 您的代码实际上是在尝试检查staticcache,而不是先按照您的说法检查 .

    • 在磁盘上创建静态文件缓存毫无意义 . Nginx也可以从原始位置读取静态文件 .

    • 在任何情况下,Nginx都会为需要缓存的项目创建缓存,通常是动态文件 . 这不是手工工作 .

    基本上,看起来你在一些网络服务器基础上有点走错了路 .

  • 2

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

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

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

    对于缓存指导的一些有趣的东西,你可以检查this out .

相关问题