gpt4 book ai didi

nginx - 如何在Nginx中隐藏文件扩展名

转载 作者:行者123 更新时间:2023-12-01 11:24:30 27 4
gpt4 key购买 nike

来自Apache背景,过去我使用一对重写规则隐藏了.html文件扩展名:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /.+\.html\ HTTP
RewriteRule ^(.+)\.html$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]

nginx的重写功能不同,可能的解决方案是 here,但是,nginx Wiki建议尽可能避免ifs是最佳解决方案,并讨论使用( try_files)代替。我想知道是否有人拥有实现这样的最佳方法,而同时:
try_files $uri $uri.html =404;

在某些情况下有效,您会遇到大量的重定向问题等。在这种情况下,有什么方法可以避免ifs?

最佳答案

您将使用try_files指令,如下所示:

location / {
try_files $uri $uri.html =404;
}

这对与位置块匹配的每个uri执行以下操作
  • 检查是否有完全匹配的文件,如果有的话,将其提供给
  • (如果未找到完全匹配),然后尝试将.html添加到请求
  • (如果未找到)返回404

  • 根本没有重定向,只是nginx依次检查了几个选项。
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]

    前2行基本上是1.和2。不同之处在于nginx不需要重写url,因为try_files指令使其足够聪明,可以在找到匹配项时返回请求

    关于nginx - 如何在Nginx中隐藏文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6808908/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com