无论是zf1还是zf2,为了实现单入口方式,都借用了apache中的mod_rewriter组件,其具体结构中的实现如下:
在public文件下放置.htaccess,其内容如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
利用以上规则,当请求地址的内容在public文件夹下不存在时,所有请求都被转向到index.php文件。
例:
当前请求URL: http://localhost/lesson1/public/a/b
public文件夹下,并不存在a文件夹,这时利用htaccess中的规则,请求的url会被修改为
http://localhost/lesson1/public/index.php/a/b
接下来通过index.php中的代码,从而把当前的请求引导到mvc框架中。