.htaccess mod_rewrite: -s 和 -f 条件的区别

问题描述

我经常使用 apache 重写模块,但现在我偶然发现了这两行:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -s [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f 

第一行使用 -s 条件。第二个使用 -f 条件。在 docs 中它写道:

对于 -f

将 TestString 视为路径名并测试它是否存在,并且是一个常规文件

对于 -s

将 TestString 视为路径名并测试它是否存在,并且是大小大于零的常规文件

我使用 Julian Pömp’s htaccess generator for angular 找到了两个条件。

那么,如果已经有 -s 条件(文件存在),那么 -f 条件(文件大小)有什么用?检查文件的存在和大小大于零的文件的存在似乎有点多余。所有文件都将通过 -f 条件,因此似乎不需要 -s 条件检查...

解决方法

你说得对,这是多余的。如果我同时使用这两个条件,则文件大小是否大于 0 都无关紧要。我会将其更改为仅 -f