【问题标题】:Codeigniter routing base troubleshootCodeigniter 路由基础故障排除
【发布时间】:2020-01-08 13:37:30
【问题描述】:

我遇到了这个问题:我从网上下载了一个登录/注册系统,并根据我的需要对其进行了调整,设置了所有目录和生根规则……一切正常,除了一件事。我在 kitematik 上运行灯,我的网站位于一个名为 appv2 的文件夹中。当我转到http://localhost:8080/appv2 时,会显示一个白页。但是如果我去http://localhost:8080/appv2/home 它会将我重定向到我的主页...现在,我怎样才能直接访问我的主页? 我尝试使用 .htaccess 和 routes.php 文件“玩”,但我无法弄清楚......这是我第一次遇到这个问题。我给你留了一个链接,这样你就可以下载项目的整个文件夹: https://file.io/qtCebE 下面我包括我的路由规则和 .htaccess 文件配置。

/////////////////////////routes.php///////////////
$route['register'] = 'user/register';
$route['login'] = 'user/login';
$route['logout'] = 'user/logout';
$route['home'] = 'user/home';
$route['appv2'] = 'user/home';

$route['default_controller'] = 'User';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = 'user/$1';

//////////////////////////.htaccess////////////////
RewriteEngine on
RewriteBase /appv2/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /appv2/index.php/$1 [L,QSA]

【问题讨论】:

  • 尝试 $route['(:any)'] = 'user/home';
  • @Vickel 已经尝试过了...不起作用...我也只是再次尝试确定...我认为问题可能出在 .htaccess 文件中,但没有得到它。 .
  • 检查你是否有 $config['index_page'] = '';在你的 config.php
  • 我有点想通了...但不是真的...在 codeigniter 设置中有些东西不正确...在我的主控制器“用户”中,索引类是空的...在那里我加载了页眉、主页和页脚,当我转到localhost:8080/appv2 时,它工作得很好......但这就像一个“解决方法”,因为在另一个项目中,我的主控制器的索引类是空的,我被重定向到我的主页...
  • @Vickel 我得到了这个:$config['index_page'] = 'index.php';

标签: php codeigniter frameworks


【解决方案1】:

您所看到的正是您设置的内容。

localhost:8080/appv2 将转到您定义的默认控制器 - 用户 - 并将使用您的 user/index 方法,因此它期望有一些东西在索引方法中。这不是“解决方法”,而是它的工作原理。这正是您所看到的。

你假设你的路由 $route['appv2'] = 'user/home'; 会启动。好吧,只有当你的链接是 localhost:8080/ appv2/appv2.

您对 $route['(:any)'] = 'user/$1'; 的使用是有问题的。它将解析为您的 用户控制器 中不存在的方法。所以在这种情况下我没有看到它的意义。

这是一个快速的答案,所以如果您不确定任何事情,请询问,我会看看是否可以扩展它。

【讨论】:

  • 我明白你在说什么,它确实帮助我理解了 codeigniter 路由的方式。但无论如何,我无法弄清楚一件事。我可以设置我的默认控制器(在这种情况下是用户),我的默认方法是自动索引,对吗?我目前正在学习网络开发课程。我们被告知使用codeigniter。我们有一个简短的介绍(“新闻”的在线教程),其中 index 方法实际上是空的,但如果您只需键入 localhost:8080/example_root 它就会加载主页。现在我被困在这个问题上,就像你可以改变你的默认方法一样。
  • 是的,如果你只是调用没有方法的控制器,索引方法总是(不是有时)被调用。你想的事情正在发生,不是。你不能让一个空的索引方法做某事。它是空的。 codeigniter 网站上的新闻示例确实在其 index 方法中有一大堆东西,所以我不确定你指的是什么。
猜你喜欢
  • 2019-10-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多