我不明白的mod_rewrite标志

时间:2012-09-04 18:58:05

标签: apache .htaccess

我通过互联网搜索了一些我似乎不理解的标志。

您何时使用[E]标志?

例如。

RewriteRule \.jpg$ - [env=dontlog:1]

那是做什么的??

NS(没有后续请求)如何工作?如果我在我的php文件中有很多包含,我是否需要将其置于NS以便它不会阻止它工作?它有用吗?

2 个答案:

答案 0 :(得分:2)

当该规则匹配(\.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

有一些关于环境变量in the mod_rewrite documentation

的信息

直接来自上述文件:

  

如果请求的URI是图像文件,则以下示例将名为“image”的环境变量设置为值“1”。然后,该环境变量用于从访问日志中排除这些请求。

RewriteRule \.(png|gif|jpg) - [E=image:1]
CustomLog logs/access_log combined env=!image

答案 1 :(得分:0)

要回答有关重写无效原因的问题,这是因为您的第一条规则会将请求从index.php重写为target.php,因此第二条规则永远不会触发,因为请求的文件不再是索引。 PHP。

评论已经为您提供了环境变量标志的答案。