php - .htaccess 中的重写规则 : what does it do

标签 php zend-framework .htaccess

.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 ),一切都很好。

Reference in the Apache manual

关于php - .htaccess 中的重写规则 : what does it do,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739312/

相关文章:

php - 尾部斜杠导致页面跳转到 404

php - 在 iOS 中检索 SQL 数据

zend-framework - Zend 框架 - 将消息从当前操作发送到 Controller 中的另一个操作

php - .htaccess 从子域重定向到子域

zend-framework - 请指导我在 zend 框架中这个查询有什么问题

php - Zend - 从 Controller 访问布局属性

javascript - 如果用户直接在 URL 中输入页面名称,如何重定向页面

PHP 脚本报告错误的凭据

php - 使用 CSS 隐藏表格行

php - 从 jQuery 中的 PHP MySQL 输出中选择 img 标签