ThinkPHP 路由配置详解:规则、正则与静态映射

远山来客
远山来客
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析 ThinkPHP 的路由机制,从开启路由的前置条件到动态规则、正则匹配及静态路由的配置方法,助你构建规范的 URL 结构。

路由配置前提与基础环境

在配置 ThinkPHP 路由之前,必须确保应用运行环境满足以下两个核心条件:

  1. 支持 PATH_INFO:URL 必须支持 PATH_INFO 模式(或兼容 URL 模式),普通的普通 URL 模式不支持路由功能。
  2. 开启路由开关:在配置文件 Application/Common/Conf/config.php 中设置 'URL_ROUTER_ON' => true。

此外,ThinkPHP 默认将请求指向 Home 模块下的 Index 控制器的 index 方法。若要访问其他控制器或方法,则需通过路由进行地址重写或跳转。

动态规则路由配置

动态路由使用 URL_ROUTE_RULES 参数进行配置,支持路径中的变量替换和参数传递。ThinkPHP 按定义顺序依次匹配规则,一旦匹配成功立即执行,后续规则不再判断。

第1步:定义基本路由规则

在配置文件中添加路由数组,格式为 '路由表达式' => '目标地址[&参数]'。例如:

'URL_ROUTE_RULES' => array(
    'blogs/:year/:month/:day' => array('Index/archive', 'status=1'),
    'blogs/:id'       => 'Index/read',
),
  • 变量命名::variableName 代表动态参数,如 :id。
  • 参数传递:目标地址后的字符串可作为额外参数传入控制器方法。

第2步:控制器方法接收参数

在上述示例中,访问 /index.php/Home/blogs/2 会触发 Index 控制器的 read 方法。对应代码如下:

public function read($id){
    echo "read page with " . $id;
}

若访问上述链接,页面将输出:read page with 2。

第3步:限制变量类型与后缀

为保证数据安全性,可对变量类型进行限制:

  • 整数限制:使用 \d 限定只接受数字。例如 'blogs/:id\d' => 'Index/read'。
  • 可选参数:使用方括号 [] 包裹可选部分。例如 '/article/:id[/:page]' 表示 page 参数非必填。
  • 后缀限制:在目标数组中指定 ext。例如 'news/:id' => array('Index/view', array('ext'=>'html')),仅当 URL 以 .html 结尾时生效。

正则路由与静态路由

第4步:配置正则路由

适用于复杂的 URL 解析。正则表达式必须以 / 开头,否则会被误判为普通规则。

'/^new/(\d{4})/(\d{2})$/' => 'Index/archive?year=:1&month=:2',

说明:

  • 括号 (...) 内的子模式内容可通过 :1, :2 等序号引用到路由地址参数中。

第5步:使用静态路由提升性能

静态路由(URL_MAP_RULES)不包含动态参数,直接通过完整字符匹配定位目标,执行效率最高。其格式简洁:

'URL_MAP_RULES' => array(
    'new/top' => 'Index/top?type=top'
),

注意事项:

  • 静态路由要求完整匹配,若 URL 包含多余参数(如 /new/top/var/test)将无法匹配该规则。
  • 此配置项通常用于高频访问的固定页面,可减少对路由规则的遍历消耗。

以上就是 ThinkPHP 路由配置的详细内容,更多关于 PHP Web框架路由开发的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。