.htaccess中的这一行是什么,我什么时候需要呢?
RewriteRule !.(js|css|ico|gif|jpg|png)$ index.php
我正在使用zend,我注意到zend生成的.htaccess没有这个规则,但是我看到了一个没有解释原因的教程。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
答案 0 :(得分:4)
这是一个RewriteRule
重定向每个请求,除了请求这些文件类型(js,CSS,图标,GIF / JPG / PNG图形)到index.php
。
因为index.php不会处理对静态资源的请求(这通常是一件好事,因为启动PHP实例很昂贵。)
但是已经在下面的代码块中处理了。这部分:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
对于实际存在的文件(index.php
),将重定向排除在-s
之外;符号链接(-
);和现有目录(-d
)。
如果您使用引用的第二个块(由Zend创建的块),一切都很好。
答案 1 :(得分:1)
规则:
RewriteRule !.(js|css|ico|gif|jpg|png)$ index.php
基本上说:“如果请求没有(!)结束($)与.js / css / ico / giv / jpg / png重定向到index.php”。
您需要此规则来避免将图像/样式表和js脚本请求传递给index.php。