【问题标题】:Convert htaccess file to nginx try_file for subfolder将 htaccess 文件转换为 nginx try_file 用于子文件夹
【发布时间】:2019-11-03 20:21:51
【问题描述】:
  RewriteEngine On
  RewriteRule ^([^\.]+)$ $1.html [NC,L]

如何将 apache .htaccess 文件转换为 nginx try_file?

我在以下文件夹结构中有静态 html 文件,并以漂亮的 URL 样式访问它们,没有 .html 扩展名,它正在使用 apache,但是当我尝试转换 nginx 配置时,它为子文件夹抛出 404。我使用https://winginx.com/en/htaccess 网站进行转换。

# nginx configuration

location / {
  rewrite ^/([^\.]+)$ /$1.html break;
}
+ root-folder  
  + index.html  - url - www.hello.com
  + abc.html  - url - www.hello.com/abc
  + .........   
  + xyz.html  - url - www.hello.com/xyz  
  + category-folder   
     + category1.html  - url - www.hello.com/category-folder/category1
     + category2.html  - url - www.hello.com/category-folder/category2
     + category3.html  - url - www.hello.com/category-folder/category3
  + page-folder 
     + page1.html - url - www.hello.com/page-folder/page1
     + page2.html - url - www.hello.com/page-folder/page2
     + page3.html - url - www.hello.com/page-folder/page3

任何帮助都会非常有用。

【问题讨论】:

  • 试试:try_files $uri $uri.html $uri/ =404;

标签: .htaccess nginx nginx-config


【解决方案1】:

try_files 是一个很好的指令,适用于由 PHP 或其他语言提供支持的动态框架的前端控制器模式,其中您只有一个引导文件,例如/index.php,“服务” SEO 友好的 URL:

/foo/ -> /index.php
/bar/ -> /index.php
/lorem/ipsum -> /index.php

如果您的文件是静态的并且您事先知道文件结构,那么try_files 只会带来stat(文件存在检查)系统调用的性能损失。

例如从 Richard 的评论中应用 try_files $uri $uri.html $uri/ =404; 意味着对于 URI /category-folder/category1,NGINX 首先检查实际文件 /category-folder/category1 是否存在,然后检查 /category-folder/category1.html 是否存在,如果不存在,检查 @ 987654332@目录存在。

坚持rewrite 很有意义,在这种情况下,转换配置非常简单。它将导致其在 Apache 中的工作方式的 1:1 匹配。

使用我的“相当复杂”Apache to NGINX config converter,它会检测您何时需要使用try_files,而何时不需要,您将获得所需的重写(将其直接放在server 上下文中,而不是在location 中) :

rewrite ^/([^\.]+)$ /$1.html last;

要检查此重写,您可以使用this test

如您所见,唯一的技巧是 NGINX 重写中的 URI(以及通常在 NGINX 中指定的 URI)必须以斜杠开头,而在 Apache 中它们被省略了。

【讨论】:

    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 2021-04-18
    • 2011-01-01
    • 2021-11-20
    • 2014-01-13
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多