我在互联网上搜索了一些我似乎不明白的标志。
你什么时候使用 [E] 标志?
例如。
RewriteRule \.jpg$ - [env=dontlog:1]
那有什么作用……?
NS(无后续请求)如何工作?如果我的 php 文件中有很多包含,我是否需要将其放在 NS 中以使其不会停止工作?它有什么用?
当该规则匹配 ( \.jpg%
) 时,环境变量dontlog
的值设置为1
。
后来,最有可能使用它的场景是 Apache 配置定义了一个CustomLog
指令,该指令读取该环境变量,并且在设置时不会将一行写入日志文件。因此,对图像文件的请求.jpg
不会写入 Apache 日志。
例如:
# Log any request that doesn't have a dontlog variable set...
CustomLog logs/access_log common env=!dontlog
mod_rewrite 文档中有一点关于环境变量的信息
直接来自上述文档:
如果请求的 URI 是图像文件,则以下示例将名为“image”的环境变量设置为值“1”。然后,该环境变量用于从访问日志中排除这些请求。
RewriteRule \.(png|gif|jpg) - [E=image:1]
CustomLog logs/access_log combined env=!image
要回答关于为什么重写不起作用的问题,这是因为您的第一条规则将请求从 index.php 重写为 target.php,因此第二条规则将永远不会触发,因为请求的文件不再是 index.php。
该评论已经为您提供了环境变量标志的答案。