.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]
最佳答案
这是一个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
);符号链接(symbolic link)(-
);和现有目录 (-d
)。
如果您使用引用的第二个 block (由 Zend 创建的 block ),一切都很好。
关于php - .htaccess 中的重写规则 : what does it do,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739312/