【问题标题】:Strange functioning with segments in codeignitercodeigniter 中段的奇怪功能
【发布时间】:2026-02-24 04:15:01
【问题描述】:

我目前正在开发具有特定架构的系统(不是我的)。在主应用程序文件夹中,有 common 资产和其他 2 个具有相同资产的文件夹(用户和管理员),这给了我们这样的架构:

  • 申请
    • 管理员
      • 配置
      • 控制器
      • 等等...
    • 用户
      • 配置
      • 控制器
      • 等等...
    • 控制器
    • 等等...

在根文件夹中,有 2 个文件:user.phpadmin.php,每个文件的代码都与经典的 index.php 中的代码相同,但该行除外

$application_folder = 'application/admin';

到目前为止,代码正在运行......但我发现了一个奇怪的反应。 在我的文件夹admin 中,在控制器下,我正在调用一个方法,除了一件事之外,该方法工作...视图未正确加载。

在所有其他方法中,我都有这种代码,只有一个参数:

public function results($param){
  $data = [];

  //some other code

  $this->load->view("election/header");
  $this->load->view("election/menu");
  $this->load->view("election/results", $data);
  $this->load->view("election/footer");
}

这是完美的工作,但是当我有第二个参数时,奇迹般地,该方法不再显示页眉/菜单/页脚。只有自定义视图result... 我还发现,例如,如果我在预览方法results 中随机添加另一个参数,则会发生相同类型的错误。页眉/页脚/菜单通常不再显示。 我猜路由/htaccess 或段有问题...但我不能指望它...

这是根.htaccess 文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^kanri(/(.*))?$ admin.php?/$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user(/(.*))?$ user.php?/$2 [L]
</IfModule>

还有admin/routing.php

$route['default_controller'] = 'login';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

感谢您的宝贵时间!

【问题讨论】:

  • 是没有加载页眉/菜单/页脚,还是加载了,但是资产不匹配?
  • 如何检查是否是这种情况?
  • 你的样式(css)和js文件加载正确了吗?
  • 这就是我的意思。您可以使用&lt;?php echo base_url('path to your css/js'); ?&gt; 解决问题,您必须编辑您的页眉和页脚。在您的config.php 中,您会发现$config['base_url'] 应该设置为您的域(例如),包括尾部斜杠/
  • 好的,所以,是的...所有路径都已手动设置...使用site_url 将其替换为相对路径似乎可以解决我的问题。谢谢你的帮助。这很简单……祝你有美好的一天!

标签: php .htaccess codeigniter


【解决方案1】:

感谢 D. Dimitrov,解决方案很简单。我只需要使用site_url() 函数替换相对路径。我还没有完全理解为什么,但是既然它起作用了,那就是 gud :>

【讨论】: