2011-01-26 363 views
3

在Apache的配置文件,还有就是避免gzip压缩的图像的行:是什么意思?

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary 

我不相信有可能存在一个.gif文件名一样myfile.*:gif

那么,是什么?:是什么意思?

回答

10

这个特定部分(?:gif|jpe?g|png)几乎是完全一样的事情(gif|jpe?g|png)

的此不同的是,第一个将无法“捕捉”括号中的组。换句话说,在查看比赛时,第一个例子中的内容不会被包含为特殊组。

通常,当你在括号括起来的项目,它被称为“捕获组”。换句话说,在查看将正则表达式与文本进行匹配的结果时,括号中的内容将被放入一个“组”中,以供以后检查。当您使用(?:stuff)时,括号内的内容仍然组合在正则表达式中,但它不被视为捕获组。

这可能是有益的,如果你想了一堆图片的文件名匹配,机器人无法捕捉不是文件名多:

"([^.]\.)(?:gif|png|tiff)" 

在匹配时对这个表达式文件,只有文件名会被捕获。文件扩展名不会是因为它不在捕获组中。

+0

+1我删除我的答案,因为这是更好的解释,只是添加的链接,可帮助... http://www.regular-expressions.info/brackets.html – Vojta 2011-01-26 16:50:39