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

CodeIgniter 3多区域网站:保留区域URL尾斜杠,移除其余URL尾斜杠

问题描述

网站采用多区域架构,需实现仅保留区域根URL的尾斜杠,移除所有其他URL的尾斜杠:

  • 需保留的URL示例:example.com/us/、example.com/in/、example.com/ae/
  • 需移除尾斜杠的URL示例:example.com/in/products/ → example.com/in/products,example.com/blogs/ → example.com/blogs,example.com/ → example.com

现有Apache重写规则会全局移除所有尾斜杠,不符合需求,需调整适配CodeIgniter 3环境。

解决方案

1. 调整Apache重写规则(.htaccess)

修改原有的尾斜杠移除规则,新增排除条件,仅对非区域根URL执行尾斜杠移除:

RewriteEngine On
RewriteBase /

# 仅移除非区域根URL的尾斜杠
# 排除规则:匹配 /xx/ 格式的区域根路径(xx为2位区域代码)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/$
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.+)/$ $1 [R=307,L]

# CodeIgniter默认路由规则,保持不变
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

规则说明:

  • RewriteCond %{REQUEST_URI} !^/[a-z]{2}/$:排除以/两位小写字母/结尾的区域根URL,不对这类路径执行尾斜杠移除
  • 其余规则保持原有逻辑,确保静态文件、真实目录不受影响,同时正常转发请求到CodeIgniter入口文件

2. CodeIgniter 3 配置配合

修改application/config/config.php中的配置,避免CI自动生成带尾斜杠的URL:

// 清空URL后缀,避免自动添加斜杠或其他后缀
$config['url_suffix'] = '';

// 强制URL转为小写(可选,匹配区域代码的小写规范)
$config['lowercase_uri'] = TRUE;

// 指定URI协议,确保路由解析正常
$config['force_uri_protocol'] = 'REQUEST_URI';

适配说明:

如果你的区域代码不是固定2位(比如存在3位代码),可将正则调整为!^/[a-z]{2,3}/$,根据实际区域代码长度修改匹配规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:37:50