ThinkPHP去除URL中index.php的实现方法
在使用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伪静态配置的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













