rewrite 没有起作用的原因

众所周知,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 

问题果然解决了。

 

你可能感兴趣的:(apache,object,服务器,action,Zend,.htaccess)