如果索引控制器没有大写,Zend自定义路由不工作?

时间:2011-10-19 13:50:14

标签: zend-framework shared-hosting zend-route

我正在我的共享托管上测试一个Zend项目。我将所有内容保存在一个文件夹'Zend-project'中,而不是在服务器public-root上(因为我有另一个项目!)。

这是结构:

/public_root
  /zend-project
    /application
      /configs
        application.ini
      /controllers
      /layouts
      /views
      bootstrap.php
    /css
    /images
    /javascript
    /zend-library
    .htaccess
    index.php

我不得不调整一下项目因为我无法在共享主机上更改我的document_root所以我编辑了.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/favicon.ico$ [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /zend-project/index.php [NC,L]

但最后一切似乎都运行正常,除了我在引导程序中添加到路由器的单个Url Route。

编辑:我尝试用一​​个动作创建一个新的控制器'TestController'..(称为'test')我试图用控制器小写字母键入url(mysite.com/zend-project/test/测试)它正在工作!我怀疑'索引'这个词本身有问题!导致任何其他控制器作为魅力

这是bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

protected function _initRoutes()
{

    $frontController=Zend_Controller_Front::getInstance();
    $router=$frontController->getRouter();  
    $router->removeDefaultRoutes();
    $router->setGlobalParam('lang','en');
    $router->addRoute(
            'lang',
            new Zend_Controller_Router_Route(':lang/:controller/:action',
            array('lang'=>':lang',
            'module'=>'default',
            'controller'=>'index',
            'action'=>'index'

            )

            )
    );


            //the following route is not working remotely.
            //Is working on local environment
    $router->addRoute(
    'langController',
    new Zend_Controller_Router_Route(':controller/:action',
    array(

            'module'=>'default',
            'controller'=>'index',
            'action'=>'index'
            )

    )
);

            $router->addRoute(
    'langIndex',
    new Zend_Controller_Router_Route(':lang',
    array('lang'=>':lang',
            'module'=>'default',
            'controller'=>'index',
            'action'=>'index'
            )

    )
 );

            $router->addRoute(
    'langNothing',
    new Zend_Controller_Router_Route('',
    array(
            'module'=>'default',
            'controller'=>'index',
            'action'=>'index'
            )

    )
);

}
}

我尝试输入以下网址(基于我创建的自定义路由),而且似乎有效:

//this points to the pair controller/action -> index/index
mysite.com/zend-project/

//this points to the pair controller/action ->index/index in english lang
mysite.com/zend-project/en

//this points to the pair controller/action ->index/rooms in english lang
mysite.com/zend-project/en/index/rooms

但每当我打字:

mysite.com/zend-project/index/index 

我收到以下消息:     未找到。在此服务器上找不到请求的URL / zend-project / index / index。

看起来请求没有到达index.php文件..可能是.htaccess问题??或者什么

感谢

编辑

通过输入带有大写字母的损坏路径的控制器,它发挥作用:

//this works.Controller has capital letter
mysite.com/zend-project/Index/index 

//this do not work.Controller has not capital letter
mysite.com/zend-project/index/index

为什么? (顺便说一句,我在Linux服务器上..)

1 个答案:

答案 0 :(得分:0)

从httpd.conf

中删除它

Options Includes ExecCGI MultiViews FollowSymLinks Indexes