ThinkCMF配置URL

这篇博客详细介绍了如何配置ThinkCMF的URL重写,包括四种模式:普通模式、PATHINFO模式、REWRITE模式和兼容模式。重点讲述了在REWRITE模式下,如何在nginx和apache服务器上设置URL重写规则,以实现最佳用户体验和SEO支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折腾了一下ThinkCMF的URL重写,以下是一些整理:

ThinkCMF是基于ThinkPHP的,所以其配置很多与ThinkPHP相似,在TP中有这么几种模式:

第一种:普通模式,在配置文件中URL_MODEL值为0,形如:http://localhost/index.php?g=index&m=index&a=index&id=1

上述链接中,g/m/a分别代表模块名称,控制器名称和方法名称(都可以在config.php中配置),最后id为参数。


第二种:PATHINFO 模式,在配置文件中URL_MODEL值为1,形如:http://localhost/index.php/index/index/index/id/1

默认为PATHINFO 模式,可以提供最好的用户体验和SEO支持。上述链接中,“/”是配置文件中的URL_PATHINFO_DEPR的值,可以自由选配分隔符。


第三种:REWRITE  模式,在配置文件中URL_MODEL值为2,形如:http://localhost/index/index/index/id/1

它是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。


第四种:兼容模式,在配置文件中URL_MODEL值为3,是用于不支持PATHINFO的特殊环境,配合服务器的重写规则,可以达到与第三种模式一样的效果。


首先在ThinkCMF后台中“设置”=》“网站信息”=》“URL设置”中选中REWRITE模式,并配上伪静态的后缀。

其次,需要修改nginx的配置,在TP官网找了一篇文章,将

location ~ .*.(php|php5)?$
{
#原有代码
}

修改为:

#去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo
#如果你不需要用到php5后缀,也可以将其去掉
location ~ .php
{
#原有代码
                
#定义变量 $path_info ,用于存放pathinfo信息
set $path_info "";
#定义变量 $real_script_name,用于存放真实地址
set $real_script_name $fastcgi_script_name;
#如果地址与引号内的正则表达式匹配
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
#将文件地址赋值给变量 $real_script_name
set $real_script_name $1;
#将文件地址后的参数赋值给变量 $path_info
set $path_info $2;
}
#配置fastcgi的一些参数
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}

另外,还做了以下的修改

if (!-e $request_filename){
             rewrite ^/(.*)$ /index.php/$1;
             #rewrite (.*) /index.php;

}

配置到此结束,重启nginx生效。

如果使用的是apache,则需要配合.htaccess文件进行设置,附一个以前用过的.htaccess文件的内容:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L](如果是兼容模式,则写成RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值