问题描述
|
我已经完成以下命令:
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]
因此,我添加了-s标志和-l标志,并取出了-d标志和包含!-f标志的行的取反。
使用!-d和!-f的意义在于允许访问目录和文件而无需重定向目录和文件。因此,如果它是文件并且存在,则不要重定向。如果是不是文件或目录的其他内容(即控制器调用),则重定向。
我不明白为什么有了这个更改,我就能正常工作了。 :(
为什么?
再次感谢。解决方法
RewriteCond %{REQUEST_FILENAME} **!**-d
RewriteCond %{REQUEST_FILENAME} **!**-f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
erorr在RewriteCond中的感叹号中,您说过要说,如果请求文件名不是目录,并且不是常规文件,请转至index.php。
您需要像在新的htaccess文件中所做的那样反转它们:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]