本日有韶光把以前用的地址重写文件.htaccess负责的剖析了一下,以前太暴躁,不太乐意深入的理解它的浸染和事理。
CI框架的入口文件是index.php, 在浏览器访问的地址该当是http://www.test.com/index.php/api/hello, 可我们觉得路径中有index.php不优雅,想写成http://www.test.com/api/hello这样的形式。
可在apache收到短缺index.php的地址时会找不到入口文件,这里就须要在 apache处理时重写地址,把地址规复成有index.php的实际地址。

.htaccess文件是放在入口文件index.php的同级目录,文件里定义了重写地址的条件和规则.
RewriteEngine On // 表示重写引擎开,关闭off,浸染便是方便的开启或关闭以下的语句,这样就不须要一条一条的注释语句了。
RewriteCond %{REQUEST_FILENAME} !-f // 当要求的文件是不存在时
RewriteCond %{REQUEST_FILENAME} !-d // 当要求的路径是不存在时
RewriteRule ^(.)$ index.php/$1 [L]
当上面的RewriteCond条件都知足的时候,将会实行此重写规则.
1. ^(.)$ 是一个正则表达的匹配,匹配所有的路径, .表示任意单个字符,表示匹配0次或N次(N>0),(.) 用于匹配某一区域内所有内容
2.^ 表示正则的开始, $ 表示正则的结束
3. index.php/$1是重写身分,意思是将前面匹配的字符重写成 index/$1, $1表示反向匹配,引用的是前面第一个圆括号的身分
4. 如果后面还连续有语句的,就不应该加上末了的[L],由于这是表示末了一条语句的意思