2012-09-04 48 views
0

有几个标志,我一直在通过互联网搜索,我似乎不明白。mod_rewrite标志,我不明白

什么时候使用[E]标志?

例如。

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

这是做什么...?

NS(无后续请求)是如何工作的?如果我在我的php文件中有很多包含,我是否需要把它放到NS,以防止它停止工作?它有什么用途?

+0

设置一个“环境变量”,然后您可以在配置中的其他地方读取它,以有条件地触发其他行为。至于它到底是什么,那是在你的配置的其他地方定义的,所以我们不能真正告诉你。 –

+0

不能阅读它,稍后在我的htaccess脚本中,设置它,然后阅读它..或保持它之间的请求,并阅读它..就像一个“会议”也许 –

回答

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是图像文件,则值为'1'。然后,该环境变量用于从访问日志中排除这些请求。

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

你有一个链接到更多的例子..我是不熟悉该日志记录系统..或与“共同”关键字 –

+0

@DmitryMakovetskiyd我一直在寻找的例子,但被拉开...只有有限的信息[在文档](http://httpd.apache。 org/docs/2.2/mod/mod_rewrite.html)我会看看还有什么可以发现的。 –

0

要回答你关于为什么重写不工作的问题,那是因为你的第一条规则重写从index.php的请求target.php,因此第二条规则将永远不会触发,因为请求文件不再是index.php。

评论已经给了你环境变量标志的答案。