我已经做了以下命令:zf创建控制器关于 - 获取404 - 为什么?
zf create controller About
所以,Zend的工具已经创建了一个控制器,一个指数动作的索引视图。
如果我再转到: http://mysite.dev/about/
我得到了一个404错误。
这是由于这个事实,在我的AboutController的Index动作中,我没有任何东西说“去查看视图”?
如果是这样,我应该怎么做才能让视图显示而不是404?
在我的.htaccess文件,位于:*〜/的public_html/mysite.dev /公/ *我:
Options +FollowSymlinks
SetEnv APPLICATION_ENV development
RewriteEngine On
#hotlinking
RewriteCond %{HTTP_REFERER} !^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?mysite\.dev [NC,OR]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?mysite\.something\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
在的/ etc/apache2的/网站可用我:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mysite.dev
DocumentRoot /home/user/public_html/mysite.dev/public
<Directory /home/user/public_html/mysite.dev/public>
DirectoryIndex index.php
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
请注意,在这个配置中,当我键入命令来创建一个新的Zend项目我得到了初步的Zend页面正确调用。
更新:
我已经改变.htaccess文件以下行,现在它的工作:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
所以我添加了一个-s标志和-l标志,并且取出-d标志和包含!-f标志的行的否定。
拥有!-d和!-f的要点是允许访问目录和文件,而不需要重定向。所以,如果它是一个文件,并且如果存在,那么不要重定向。如果其他东西不是文件或目录(即控制器调用),则重定向。
我不明白为什么,有了这个改变,我得到了它的工作。 :(
为什么?
再次感谢。
是正确的.htaccess安装程序和url重写可用的虚拟主机?一个新的空行为将显示新的空视图...不是404错误。 – MiPnamic 2011-04-19 12:16:39
hhmmm ...所以我有一个问题... :(我将更新我的问题和粘贴htaccess文件和虚拟主机信息。谢谢 – MEM 2011-04-19 12:23:46
它是一个Zend错误控制器404或apache 404? – Gnuffo1 2011-04-19 12:41:00