如何从 codeigniter 中的 url 中删除所有控制器名称
How to remove all controller names from url in codeigniter
我在一个 Codeigniter 项目中有多个控制器。我需要隐藏这些控制器名称。例如:我有两个控制器,家庭和学校。每个学校都有自己的页面,包括关于、画廊、联系方式等,url 应该是 http://www.sitename.com/schoolname。我使用 routes.php 隐藏家庭控制器。
$route['(:any)'] = 'home/';
但它在学校控制器中显示错误。请帮助我.....谢谢。
试试这个
$route['anything you want/(:any)'] = 'home/';
控制器名称是必需的,因此请将其设置为您想要的任何名称
控制器名称不是绝对必需的。
在routes.php
中首先定义默认控制器为home
(当用户访问主页时sitename.com)
$route['default_controller'] = 'home';
然后您创建规则,任何其他页面都应重定向到 school
控制器:
$route['.*'] = 'school';
现在 home.php
控制器将如下所示:
class Home extends CI_Controller {
public function Index()
{
echo "This is the homepage";
}
}
并且在 school.php
控制器中,您必须从请求的 URL:
中手动获取学校名称
class School extends CI_Controller {
public function _remap()
{
echo "User requested school: " . $this->uri->segment(1);
}
}
为什么要使用_remap
方法?因为无论 URL 或路由中有什么,每次都会调用它。
来自 the docs:
If your controller contains a method named _remap(), it will always get called regardless of what your URI contains.
我在一个 Codeigniter 项目中有多个控制器。我需要隐藏这些控制器名称。例如:我有两个控制器,家庭和学校。每个学校都有自己的页面,包括关于、画廊、联系方式等,url 应该是 http://www.sitename.com/schoolname。我使用 routes.php 隐藏家庭控制器。 $route['(:any)'] = 'home/'; 但它在学校控制器中显示错误。请帮助我.....谢谢。
试试这个
$route['anything you want/(:any)'] = 'home/';
控制器名称是必需的,因此请将其设置为您想要的任何名称
控制器名称不是绝对必需的。
在routes.php
中首先定义默认控制器为home
(当用户访问主页时sitename.com)
$route['default_controller'] = 'home';
然后您创建规则,任何其他页面都应重定向到 school
控制器:
$route['.*'] = 'school';
现在 home.php
控制器将如下所示:
class Home extends CI_Controller {
public function Index()
{
echo "This is the homepage";
}
}
并且在 school.php
控制器中,您必须从请求的 URL:
中手动获取学校名称
class School extends CI_Controller {
public function _remap()
{
echo "User requested school: " . $this->uri->segment(1);
}
}
为什么要使用_remap
方法?因为无论 URL 或路由中有什么,每次都会调用它。
来自 the docs:
If your controller contains a method named _remap(), it will always get called regardless of what your URI contains.