众所周知,zend framework 的工作机制是 要用 mod_rewrite 的,
按照要求配置了服务器, 并且正确修改了 .htaccess 之后, IE地址栏运行
http://localhost/zend2/public/index/add
结果报错 Object Not Found !
于是判断rewrite 的配置有问题。
之前我是用 zf 命令生成了 zf 项目, 并用 zf create action add 生成了动作函数。
由于我对 rewrite 命令并不熟悉, 所以 public/.htaccess 并没有被修改过,是 zf 自动做成的,应该是正确的,那为什么会错呢。
原始 .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]
查了一下 apache rewrite 手册,发现里面提到了 RewriteBase 命令, 我的理解是rewrite 是用来指明基本路径的,
于是领悟了。
由于我配了 Alias zend2 /xxxx/xxxx/xxx 这样的别名, 所以应该指明 RewriteBase 的路径,否则默认情况这个路径指向在
documentroot 下, 于是在.htaccess 中加了
RewriteBase /zend2/public
再运行 http://localhost/zend2/public/index/add
问题果然解决了。