我有一个zend框架应用程序,它似乎运行正常,我可以在domain.com/ IndexController /action上访问我的应用程序。我现在已经做了一个新的控制器,我得到了“页面无法显示”。
但是,我可以通过以下地址访问我的新控制器: domain.com/index.php/ controller /action
我已经检查了所有常见的东西,AllowOverride是打开的,重写是启用的,htaccess文件是你创建Zend示例项目时创建的默认文件。我觉得我错过了一些基本的东西,如果有人能帮上忙,我将不胜感激!谢谢您:)
发布于 2012-03-08 04:55:06
您需要设置路由来控制ZF如何将请求的URL路由(转换)为特定的控制器/操作。
查看Zend Framework路由文档here
尝试将如下内容添加到您的application.ini中:
myroute resources.router.routes.routename.defaults.controller = mycontroller resources.router.routes.routename.defaults.action =
resources.router.routes.routename.route = "/myroute/“myaction
EDIT:在重新阅读您的问题后,您可能会在重写时遇到问题:)您提到allowoverride处于打开状态-您的配置中的确切行是什么?
如果您的请求根本不是通过您的index.php路由的,请尝试"AllowOverride FileInfo“或"AllowOverride All”。
祝好运!
发布于 2012-03-08 16:32:54
我想可能是symlinks
下面是一个有效的vhost示例
<VirtualHost *:80>
DocumentRoot "C:\www\zf2-tutorial\public"
ServerName zf2-tutorial.local
ErrorLog "C:\Zend\ZendServer\logs\zf2-tutorial.local.log"
SetEnv APPLICATION_ENV "development"
<directory "C:\www\zf2-tutorial">
Options Indexes FollowSymlinks
AllowOverride all
Order Deny,Allow
Allow from all
</directory>
</VirtualHost>我认为您的问题可能是Options Indexes FollowSymlinks不存在。
尽管urls可能显示为domain.com/index.php/module/controller/action,但它应该与domain.com/module/controller/action一起工作。有几种方法可以从显示的url中删除index.php。我使用的方法是将这一行添加到index.php的顶部
$_SERVER["REQUEST_URI"] = str_replace('index.php','',$_SERVER["REQUEST_URI"]);
https://stackoverflow.com/questions/9608818
复制相似问题