我已完成以下命令:
zf create controller About
因此,zend工具创建了一个控制器,索引操作创建了一个索引视图。
如果我然后去: http://mysite.dev/about/
我收到了404错误。
这是因为在我的AboutController的Index操作中,我没有任何说“看看视图”的内容吗?
如果是这样,我应该采取什么行动,以便显示视图而不是404?
在我的.htaccess文件中,位于:*〜/ public_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 / sites-available 中我有:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
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的要点是允许访问目录和文件而不重定向目录和文件。所以,如果它是一个文件,如果存在,那么,不要重定向。如果是其他不是文件或目录的东西(即控制器调用),则重定向。
我不明白为什么,通过这种改变,我得到了它的工作。 :(
为什么?
再次感谢。
答案 0 :(得分:1)
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]