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

Php 将错误URL重定向到指定URL codeigniter,php,.htaccess,codeigniter,Php,.htaccess,Codeigniter,这是我当前的文件夹结构: 说明: 我的基本url是:localhost/shoppingCart 我的默认控制器是Welcome 我把我的项目分为两部分:前端和后端 对于后端,我的标准控制器是“admin/home”(admin是文件夹,home是控制器的名称) 对于前端,我的标准控制器是“欢迎”(欢迎是控制器的名称) 问题: 当我输入localhost/ShoppingCart/admin时,它将进入“欢迎”控制器,但url保持不变。我想我应该抛出一些错误 当我输入localhost/S

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

说明:

  • 我的基本url是:
    localhost/shoppingCart
  • 我的默认控制器是
    Welcome
我把我的项目分为两部分:前端和后端

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

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

问题:

当我输入
localhost/ShoppingCart/admin
时,它将进入“欢迎”控制器,但url保持不变。我想我应该抛出一些错误

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

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

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

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

#Redirect a sub folder to root
Redirect 301 /subfolder /
在您的情况下,它将是:

redirect 301 /admin /

我想你的问题出在路线上了

我还建议您使用控制器的“好”名称

“欢迎”和“家”并不像后端和前端那个样是两码事

现在谈谈代码

我假设您的
routes.php
文件包含如下内容

$route['default_controller'] = "welcome";
现在,对于控制器文件夹中的每个子文件夹,必须在
routes.php
中设置默认控制器,
$route['default\u controller']
在子文件夹中不起作用

对你来说,会是这样

$route['admin'] = 'admin/home'
注意,请记住仅设置要使用的名称,关于框架将要管理的符号
/


url中的哪个将是
APPPATH.controllers'
dir中的每个子目录都应该有一个与
APPPATH.route.php'
中的默认控制器同名的控制器。如果您将管理模块
Home.php
重命名为
Welcome.php
(内部也有类),则可以解决此问题。这是因为,当路由器找不到第一个uri段的
Admin.php
文件时,它会寻找
Admin
目录。当找到它时,若url中并没有下一个段,路由器将查找
config.php
文件中设置的默认控制器方法。在每个分区以及
controllers
dir.

thanx中为主页或欢迎页面使用统一名称很容易解决有关命名约定的建议。如果我使用“$route['admin']='admin/home',它将重定向到我不想要的后端主页。我希望“localhost/ShoppingCart/admin”重定向到我的主域,即“localhost/ShoppingCart”,我看不出有私人区域和不访问它有什么意义,但是如果你这样做,
$route['admin']=“welcome”
没有
/
符号应该有效。Thanx用于解决方案..我必须输入routes.php吗?上面提到的u的语法是什么。不,这会出现在你的
.htaccess
文件中。下面是一些不起作用的例子。。我将“重定向301/admin”放入htaccess。问题是当我输入“localhost/shoppingcart/admin”时,它应该说页面未找到或重定向到主页。但它正在加载我的主页,即“localhost/shoppingcart”和相同的URL。欢迎使用Stack Overflow!我对格式做了一些改进,使它更容易阅读。请查看以获取更多示例。