RewriteRule ^(.*)/ $?path = $ 1 [QSA,L]在我的.htaccess中意味着什么?

0pT*_*TEC 3 regex .htaccess mod-rewrite rewrite nginx

我需要像在.htaccess中一样在nginx中创建重写,并且有一些我不完全理解的行.

DirectoryIndex index.php

RewriteEngine on
RewriteCond % !-f
RewriteRule ^(.*)/$ ?path=$1  [QSA,L]
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?

anu*_*ava 7

RewriteCond % !-f 似乎不正确的规则条件,并始终评估为真.

这条规则:

RewriteRule ^(.*)/$ ?path=$1  [QSA,L]
Run Code Online (Sandbox Code Playgroud)

匹配任何URI以斜线和内部重写/?path=uri-without-slash

所以对于ex:/foo/将重写URI/?path=foo

  • QSA - 查询字符串追加
  • L =最后一条规则

参考:Apache mod_rewrite简介

更新:将错误的条件更改为:

# request is not for a file
RewriteCond %{REQUEST_FILENAME} !-f
# request is not for a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ ?path=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)