Zend Framework:在此服务器上找不到请求的URL

时间:2013-11-16 17:55:34

标签: php apache .htaccess zend-framework zend-framework2

周围似乎有很多类似的问题,但是我发现解决了我的问题版本,我通过本地osx web服务器运行zend框架框架。

导致标准路线如下:http://localhost/~adam/api/public/

默认索引的路径已更改,以便我的应用程序正常工作:

     'routes' => array(
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Application\Controller\Testimonial',
                    'action'     => 'create',
                ),
            ),
        ),

当我创建新路线时,遵循相同的想法,它看起来像这样:

       'list' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/list',
                'defaults' => array(
                    'controller' => 'Application\Controller\Testimonial',
                    'action'     => 'list',
                ),
            ),
        ),

所以它链接到同一个控制器,理论上,我应该只能访问http://localhost/~adam/api/public/list它应该可以工作,但是我找不到页面。

我看到有人建议可以使用当前默认为 .htaccess 的文件:

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

我也看到有人建议你必须编辑 /etc/apache2/httpd.conf 文件,设置AllowOverride all而不是AllowOverride none,但要么这样做不起作用或我做错了,我尝试了一些变化,最后得到这个:

<Directory "/~adam/api/public">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

假设这是我需要的正确修复,有人可以指出我哪里出错吗?或建议如何解决此问题。由于conf中有一些目录列表,我可能会更改错误的目录吗?

1 个答案:

答案 0 :(得分:0)

路由匹配导致此问题。

如果你提到像'route'=&gt; '/ list',,然后它从localhost看起来。但是,list是~adam项目下的一个模块。

要解决此问题,请创建虚拟主机。如果您使用的是Virutal Host,那么“/ list”将从您的(虚拟)主机名中查找。

否则,你已经指定了这个,

'route' => 'http://localhost/~adam/list'

但这是不好的做法。