【发布时间】:2016-08-26 09:20:07
【问题描述】:
我正在寻求帮助以了解特定 .htaccess 文件的工作原理。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
以下是我认为到目前为止我所理解的:
第 1 行:允许 Apache 根据某些规则更改 url?
第 2,3 行:关于不访问文件和目录的内容。但是我的浏览器在访问http://localhost/dev/can_i/yes_i_can.php 时没有问题,所以我认为我没有正确理解。
第 4 行:我知道 ^(.*)$ 是一个正则表达式,表示“以任何东西开头和结尾”,但这到底指的是什么?整个网址?然后它被 index.php 替换,并附加了表达式。那么我们为什么不得到像localhost/index.php?url=localhost/index.php/whatever_came_after 这样的东西呢?
最后 [L, QSA] 做了什么?我知道 QSA 的意思是“查询字符串追加”,但不确定它是如何工作的。
非常感谢任何帮助。
【问题讨论】: