You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改XAMPP Apache端口为81后CodeIgniter项目资源链接404如何解决

问题原因
  • 核心是CodeIgniter的全局站点根URL配置base_url没有包含自定义的81端口:
    • 如果你在application/config/config.php里手动写死了$config['base_url'] = 'http://localhost/project_name/';,没有带上端口,CI生成所有站点链接的时候都会用这个不带端口的域名,资源路径拼接也会基于这个配置,就会丢失81端口。
    • 如果你留空了base_url让CI自动检测,部分旧版本CI的自动识别逻辑不会主动抓取非80/443的自定义端口,也会出现端口丢失的问题。
  • 额外排查点:如果你的Apache配置或者.htaccess规则里写了强制跳转的规则,跳转目标没有带81端口,也会导致访问的时候端口被抹掉。
解决方法
  1. 修改CodeIgniter的base_url配置
    打开项目路径下的application/config/config.php,找到base_url配置项,修改为带端口的完整根地址:
$config['base_url'] = 'http://localhost:81/project_name/';

注意末尾的斜杠要保留,避免拼接路径的时候出现错误。

  1. 所有资源链接统一用CI的base_url()函数生成
    不要直接写相对路径的href,改为用CI提供的方法拼接完整路径,确保端口统一:
    原来的写法:
<link rel="stylesheet" href="css/style.css">

修改为:

<link rel="stylesheet" href="<?php echo base_url('css/style.css'); ?>">

生成出来的路径会自动带上你配置的端口,变成http://localhost:81/project_name/css/style.css,不会出现404。

  1. 可选:修复自动识别逻辑(适合多环境部署的场景)
    如果不想写死端口方便多环境切换,可以修改base_url的自动识别逻辑,加入端口判断:
$config['base_url'] = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') $config['base_url'] .= "s";
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

$_SERVER['HTTP_HOST']本身会自带访问时的端口号,这样不管你换什么端口,都会自动识别到正确的根地址。

  1. 排查重定向规则
    如果修改完还是有问题,检查项目根目录的.htaccess文件,或者Apache的vhost配置,有没有写死跳转地址的规则,把对应的地址也加上81端口即可。

内容的提问来源于stack exchange,提问作者Rishabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 01:51:03