.htaccess 将子文件夹的htaccess文件转换为nginx try_文件

.htaccess 将子文件夹的htaccess文件转换为nginx try_文件,.htaccess,nginx,nginx-config,.htaccess,Nginx,Nginx Config,如何将apache.htaccess文件转换为nginx try\u文件 我在下面的文件夹结构中有静态html文件,并使用不带.html扩展名的漂亮URL样式访问它们。apache正在使用它,但当我尝试转换nginx config时,它为子文件夹抛出了404。我使用该网站进行转换 RewriteEngine On RewriteRule ^([^\.]+)$ $1.html [NC,L] 任何帮助都是必要的 对于由PHP或其他语言支持的动态框架的前端控制器模式,try_files是一个

如何将apache.htaccess文件转换为nginx try\u文件

我在下面的文件夹结构中有静态html文件,并使用不带.html扩展名的漂亮URL样式访问它们。apache正在使用它,但当我尝试转换nginx config时,它为子文件夹抛出了404。我使用该网站进行转换

  RewriteEngine On
  RewriteRule ^([^\.]+)$ $1.html [NC,L]

任何帮助都是必要的

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

+ 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\u files
只会带来
stat
(文件存在性检查)系统调用的性能损失

例如,应用
try_文件$uri$uri.html$uri/=404意味着对于URI
/category folder/category1
,NGINX首先检查实际文件
/category folder/category1
,然后检查
/category folder/category1.html
是否存在,如果不存在,检查
/category文件夹/category1/
目录是否存在

坚持
重写
非常有意义,在本例中,转换配置非常简单。这将导致它在Apache中如何工作的1:1匹配

使用我的“相当复杂”,它可以检测何时需要使用
try\u文件,何时不需要,您将获得所需的重写(将其直接放在
服务器
上下文中,而不是放在
位置
):

要检查此重写,可以使用


正如您所看到的,唯一的诀窍是NGINX重写中的uri(以及通常在NGINX中指定的uri)必须以斜杠开头,而在Apache中它们被省略。

Try:
Try\u files$uri$uri.html$uri/=404
+ 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
/foo/ -> /index.php
/bar/ -> /index.php
/lorem/ipsum -> /index.php
rewrite ^/([^\.]+)$ /$1.html last;