重写规则——它们到底是什么意思

Rewrite Rule - What Exactly Do They Mean

我正在使用 htaccess 文件重写我的所有页面,并且一切正常,除了我不得不承认我不知道某些部分的确切含义。例如,以下几行的含义和作用是什么:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

还有,能不能弄清楚[NC,L,QSA]([\w-]+)中的字母的意思。非常感谢任何对此的帮助。

RewriteCond %{REQUEST_FILENAME} !-f

如果请求已经针对现有文件,此行告诉服务器停止重写。

RewriteCond %{REQUEST_FILENAME} !-d

如果请求已经针对现有目录,则此行告诉服务器停止重写。

[NC,L,QSA]

这些是重写标志,

NC=> No Case,使重写模式区分大小写, L=> 表示最后,它告诉服务器停止处理其他重写规则,如果规则匹配它的模式。

QSA=> 查询字符串附加,将查询字符串附加到新目标 url。

来源:

阿帕奇 mod_rewrite => http://httpd.apache.org/docs/current/mod/mod_rewrite.html

旗帜 => https://httpd.apache.org/docs/2.4/rewrite/flags.html