Php Yii控制器命名约定
我有一个名为Php Yii控制器命名约定,php,linux,apache,yii,Php,Linux,Apache,Yii,我有一个名为CategoryAdminController.php的控制器,可以通过Windows计算机上本地主机中的{siteurl}/categoryadmin/index访问该控制器。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是,当我将控制器重命名为CategoryadminController.php(以及相应的类名)时,它工作正常 有没有办法在加载页面的同时将原始名称保留在控制器中(即:CategoryAdminController.php) 根据Yii指
CategoryAdminController.php
的控制器,可以通过Windows计算机上本地主机中的{siteurl}/categoryadmin/index
访问该控制器。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是,当我将控制器重命名为CategoryadminController.php
(以及相应的类名)时,它工作正常
有没有办法在加载页面的同时将原始名称保留在控制器中(即:CategoryAdminController.php
)
根据Yii指南,这似乎是不可能的
有什么想法吗
谢谢在Linux操作系统上,文件名区分大小写,但在Windows上不区分大小写。您是否尝试访问它:
{siteurl}/categoryAdmin/index
您可以使用重写URL。在您的情况下,可以使用以下代码:
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => FALSE,
'rules' => array(
'categoryadmin/<action:\w+>' => 'categoryAdmin/<action>'
),
),
'urlManager'=>数组(
“urlFormat”=>“路径”,
'showScriptName'=>FALSE,
'规则'=>数组(
“categoryadmin/”=>“categoryadmin/”
),
),
要保持控制器名称和操作名称的大小写并在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
异常。所以,最好还是按惯例办事。嗨,谢谢你的回复。是的,它只在Linux中区分大小写。是的,我试过{siteurl}/categoryAdmin/index,它很有效。但我需要它的工作,即使是小写的网址。(即:{siteurl}/categoryadmin/index)很抱歉我的回复太晚了,您可以在.htaccess文件中设置重写规则。例如:
RewriteRule^categoryadmin/index$/index.php?r=categoryadmin/index[NC,L,QSA]
这是正确的答案,应该选择+1同样适用于Yii2