Zend framework zf创建控制器关于-获得404-为什么?

Zend framework zf创建控制器关于-获得404-为什么?,zend-framework,Zend Framework,我已执行以下命令: zf create controller About 因此,zend工具创建了一个控制器、一个索引操作和一个索引视图 如果我接着去: 我有一个404错误 这是因为,在AboutController的索引操作中,我没有任何内容显示“查看视图”吗 如果是这样的话,我应该在这个动作上做些什么,以便显示视图而不是404 在我的.htaccess文件中,位于:*~/public\u html/mysite.dev/public/*我有: Options +FollowSymlink

我已执行以下命令:

zf create controller About
因此,zend工具创建了一个控制器、一个索引操作和一个索引视图

如果我接着去:

我有一个404错误

这是因为,在AboutController的索引操作中,我没有任何内容显示“查看视图”吗

如果是这样的话,我应该在这个动作上做些什么,以便显示视图而不是404

在我的.htaccess文件中,位于:*~/public\u html/mysite.dev/public/*我有:

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/可用站点中,我有:

所以我添加了a-s标志和a-l标志,去掉了-d标志的否定和包含-f旗

这就是为什么要有这样的想法-d和d-f是指允许访问目录和文件,而不必重定向这些目录和文件。所以,如果它是一个文件,并且存在,那么,不要重定向。如果不是文件或目录(即控制器调用),则重定向

我不明白为什么,有了这个变化,我让它起作用了(

为什么?

再次感谢

RewriteCond %{REQUEST_FILENAME} **!**-d
RewriteCond %{REQUEST_FILENAME} **!**-f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
erorr在RewriteCond中位于感叹号中,您对apache说,如果请求文件名不是一个目录,也不是一个常规文件,则直接转到index.php

您需要像在新的htaccess文件中一样反转它们:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

.htaccess设置是否正确,vhost上是否可以进行url重写?新的空操作将显示新的空视图…不是404错误。hhmmm…因此我有一个问题…(我将更新我的问题并粘贴htaccess文件和vhost信息。感谢Zend error controller 404或apache 404?这是apache 404:(因此,这可能意味着该问题可能与.htaccess文件有关。错误的重定向。可能是考虑的是一个目录?听起来好像重写根本不起作用。如果您尝试一些随机的url,例如mysite.dev/asdfsadf/,会发生什么情况-如果它起作用,应该显示一个Zend 404。然后有两个问题:1)为什么我们需要这些-s和-l标志?2)我想我是在告诉你,如果请求文件名不是目录或常规文件,那么,重写。我们在哪里可以读到“直截了当”部分?再次感谢。直截了当(sry表示我的英语不好)是这样一行:重写规则^.$-[NC,l],在公共目录中查找物理文件(如图像、css等)时,前3行很有用。无需重定向到索引。phpI我的英语很差,不用担心。:)我们在哪里可以阅读“否则”?我们有3个条件和两条规则,第二条规则只有在第一条规则不适用时才适用吗?是的,先生,如果3个重写条件之一为真(因为存在[OR]),则应用第一条规则,否则应用第二条规则
RewriteCond %{REQUEST_FILENAME} **!**-d
RewriteCond %{REQUEST_FILENAME} **!**-f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]