ThinkPHP去除URL中index.php的实现方法

橘子海
橘子海
发布时间:2026-10-14| 3人浏览过
原创

在使用ThinkPHP开发时,默认生成的URL通常包含入口文件index.php。为了获得更简洁、语义化的链接结构,通常需要开启URL重写功能并调整框架的URL_MODEL配置。本文将分别介绍在Apache环境和新浪SAE平台上的具体操作方法。

Apache环境下的配置

Apache是常见的PHP运行环境,通过配置伪静态规则可以隐藏index.php。请按以下步骤操作:

第1步:添加.htaccess重写规则

目的:捕获所有非文件和目录的请求并重定向至入口文件。 位置:项目根目录下创建或编辑 .htaccess 文件。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

第2步:开启Apache的rewrite_module

目的:确保Apache服务器支持URL重写模块。 操作:打开Apache配置文件 httpd.conf(或在 conf/extra/httpd-vhosts.conf 中配置)。 步骤:
1. 搜索 LoadModule rewrite_module modules/mod_rewrite.so,若前面有注释符号 # 请将其删除。
2. 找到对应项目的 AllowOverride None 指令,将其修改为 AllowOverride All,以允许使用 .htaccess 中的重写规则。

第3步:修改ThinkPHP应用配置

目的:告诉ThinkPHP框架使用PATHINFO模式生成URL,避免模板或U函数生成的链接仍包含index.php。 位置:应用配置文件 Conf/config.php。

添加或修改以下配置项:

'URL_MODEL' => 2,

注意:部分定制版本(如Conist企业版)可能在初始化代码中覆盖了该值。如果修改配置后无效,请检查 TOKEN.false_static 等相关常量或配置项是否被强制设置为1。确保最终生效的模式值为2。

新浪SAE环境下的配置

新浪云应用(SAE)不支持标准的 .htaccess 文件,而是通过 config.yaml 进行路由分发设置。

第1步:配置config.yaml路由规则

目的:在SAE网关层实现将动态请求转发给入口文件。 位置:项目根目录下的 config.yaml 文件。

在 handle 节点下添加重写规则:

handle:
  - rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"

保存 config.yaml 并重新部署代码即可生效。此时访问URL将不再显示index.php,且框架内部生成的链接也会正确解析。

验证与总结

完成上述步骤后,可以通过浏览器访问 http://localhost/控制器/动作 形式的地址来验证是否成功。如果在SAE或本地环境中发现链接仍然包含index.php,请重点排查 'URL_MODEL' => 2 是否已正确加载,以及Web服务器(Apache/SAE路由)是否已重启或重载配置。

以上就是ThinkPHP去掉index.php的详细内容,更多关于ThinkPHP伪静态配置的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。