我有一个名为CategoryAdminController.php
的控制器,可以在Windows机器上的localhost中由{siteurl}/categoryadmin/index
访问。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是当我将控制器重命名为CategoryadminController.php
(以及相应的类名)时,它运行正常。
有没有办法加载页面,同时在控制器中保留原始名称(即:CategoryAdminController.php
)
根据Yii指南,似乎不可能。
http://www.yiiframework.com/doc/guide/1.1/en/basics.convention
有什么想法吗?
谢谢
答案 0 :(得分:2)
要保持控制器名称和操作名称CamelCased并在Linux上运行,您需要在URL中的每个单词之间添加短划线:
"{siteurl}/category-admin/index" -> CategoryAdminController->indexAction()
"{siteurl}/category-admin/my-way" -> CategoryAdminControllern->myWayAction()
这适用于 Linux 和 Windows 。
Windows 读取文件和文件夹不区分大小写。并经常隐藏一些错误。
当您在Windows上进行开发时,常见的问题是...并创建链接categoryadmin
操作系统会很高兴为您提供类似的文件
CaTegoRYadmiNcontroller.php
忽略大写。
但是,当您在Linux上部署相同的代码和文件时,您将获得File Not Found
个例外
所以,最好坚持惯例。
答案 1 :(得分:0)
在Linux操作系统上,文件名称区分大小写,但在Windows上则不区分大小写。您是否尝试访问它:{siteurl}/categoryAdmin/index
?
答案 2 :(得分:0)
您可以使用urlManager重写网址。在您的情况下,您可以使用以下代码:
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => FALSE,
'rules' => array(
'categoryadmin/<action:\w+>' => 'categoryAdmin/<action>'
),
),