将错误的URL重定向到指定的URL codeigniter

时间:2016-08-10 14:19:54

标签: php .htaccess codeigniter

这是我当前的文件夹结构:

描述:

  • 我的base_url是:localhost/shoppingCart
  • 我的默认控制器为Welcome

我将我的项目分为两部分:前端和后端。

对于后端我的标准控制器是“admin / home”(admin是文件夹,home是控制器的名称)

对于前端我的标准控制器是“欢迎”(欢迎是控制器的名称)

问题:

当我输入localhost/ShoppingCart/admin时,它将“欢迎”控制器,但网址仍然相同。我想我应该抛出一些错误。

当我输入localhost/ShoppingCart/admin/home时,它正常运作。

我尝试使用路线将localhost/ShoppingCart/admin重定向到localhost/ShoppingCart

$route['/admin'] = "welcome";

3 个答案:

答案 0 :(得分:0)

要将子文件夹重定向到您的主域,您必须执行以下操作:

#Redirect a sub folder to root
Redirect 301 /subfolder /

在你的情况下,它将是:

redirect 301 /admin /

答案 1 :(得分:0)

我猜你的问题出在路线上。

我还建议您使用" Good"控制器Naming convention Wikipedia

中的名称

"欢迎"和"家庭"并不是后端和前端两种不同的东西。

现在关于代码

我假设您的routes.php文件包含类似

的内容
$route['default_controller'] = "welcome";

现在,对于控制器文件夹中的每个子文件夹,您必须在routes.php中设置默认控制器,$route['default_controller']在子文件夹中不起作用。

对你来说,就像是

$route['admin'] = 'admin/home'

注意,请记住只设置您要使用的名称,关于框架将管理它们的符号/

在网址中将是http://localhost/ShoppingCart/admin

答案 2 :(得分:0)

APPPATH.'controllers'目录中的每个子目录都应该具有与APPPATH.'route.php'中的默认控制器相同的控制器。如果您要将管理模块Home.php重命名为Welcome.php(类内也是如此),则可以解决此问题。这是因为,当路由器找不到第一个uri段的Admin.php文件时,它会寻找admin目录。找到它时,如果url中没有下一个段,路由器将寻找config.php文件中设置的默认控制器方法。在每个子目录以及controllers目录中为家庭或欢迎页面提供统一名称很容易解决。