我正在我的共享托管上测试一个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服务器上..)
答案 0 :(得分:0)
从httpd.conf
中删除它 Options Includes ExecCGI MultiViews FollowSymLinks Indexes