如何在Codeigniter 3的URL中使用下划线和小写字母?

时间:2019-06-10 03:53:36

标签: codeigniter twig codeigniter-3 php-5.6

我为遇到神秘问题而烦恼。 使用以下目录结构创建了我的开发环境。

document_root
 └ project
  ├ application
  │├ controllers
  ││└ admin
  ││ ├ Users.php
  ││ ├ Facility_Categories.php
  ││ └ Facilities.php
  │└ views
  │ └ admin
  │  ├ users
  │  │└ index.twig
  │  ├ facility_categories
  │  │└ index.twig
  │  └ facilities
  │   └ index.twig
  └ public
   └ index.php

在开发环境中,这些URL按预期出现。

https://www.example.com/project/admin/users/
 -> load admin/Users.php index function
https://www.example.com/project/admin/facilities/
 -> load admin/Facilities.php index function
https://www.example.com/project/admin/facility_categories/
 -> load admin/Facility_Categories.php index function

最近,当我将这些文件上传到测试环境时。 未正确显示包含“下划线”的URL。 看来控制器未加载。

https://www.example.com/project/admin/users/
 -> load admin/Users.php index function
https://www.example.com/project/admin/facilities/
 -> load admin/Facilities.php index function
https://www.example.com/project/admin/facility_categories/
 -> 404 Page Not Found (display codeigniter show_404 function)

顺便说一句,如果URL大写,则将加载控制器,但不会加载View。 (如果视图的目录名称大写,也会显示该视图。)

https://www.example.com/project/admin/Facility_Categories/
 -> 500 Internal Server Error
      (Twig\Error\LoaderError : Unable to find template "admin/Facility_Categories/index.twig")

我想使用小写的URL访问。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,可以阅读以下网址

CodeIgniter Controller Case-Sensitive

CodeIgniter3似乎只需要大写控制器名称的第一个字母,然后使用所有小写字母。 (确定:Facility_categories.php异常:Facility_Categories.php

我只改变了2分。

  1. 将控制器文件名从Facility_Categories.php更改为Facility_categories.php
  2. 将控制器类名称从class Facility_Categories更改为class Facility_categories

现在,我可以访问包含小写和下划线的网址

https://www.example.com/project/admin/facility_categories/