2015-06-19 83 views
1

我目前正在看一个htaccess文件。它包含此内容什么是“!”在重写Rule中做什么?

RewriteEngine On 
RewriteRule !\.(css|jpg|png|xml)$ index.php 

什么是“!”做和这是一个有效的重定向的CSS和其他重要文件?

+2

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule它在'RewriteRule'文档部分的一半左右。不容易找到。 –

回答

3

!基本上意味着NOT。换句话说,只要以下不匹配,应用规则。

# anything that does NOT end in .css, .jpg, .png, or .xml 
# send to index.php  
RewriteRule !\.(css|jpg|png|xml)$ index.php 
+0

他说了什么?而且,我记得,你可以控制NOT应该瞄准的部分 – mowgli

1

更具体地讲,它说,如果不那些扩展然后重写index.php文件。

在这个例子中,

RewriteRule !\.(css|jpg|png|xml)$ index.php 

这也可以因此,无论如何要忽略你可以做的文件写成

#if these file extensions don't do anything and stop processing rules 
RewriteCond %{REQUEST_URI} \.(css|jpg|png|xml)$ 
RewriteRule^- [L] 
#else send everything to php 
RewriteRule . /index.php [L] 

。但是你的规则更短。这是有效的回答你的问题,以便某些文件不会路由到index.php。

+0

这很有趣,你能告诉我第一个RewriteRule中的“ - ”是什么吗? – MooCow

+1

这只是意味着不做任何事情,因为没有替代字符串。 –

相关问题