ThinkPHP6伪静态设置并隐藏默认模块名,如home
发表于:2021-11-03 22:47:43浏览:3340次
查看和修改默认模块名:
查看配置在 config/app.php 中:
// 默认应用 'default_app' => 'index',
项目默认安装的默认模块是 index,
可以自定义修改为其他模块名,比如home, 只需要调整 配置项 default_app 值为home,把默认模块名index目录改名为home即可
获取默认模块名称,代码如下:
//默认模块名
$defalutModule = config('app.default_app');
//当前模块名
$currentModule = app('http')->getName();伪静态设置隐藏默认模块名:
比如默认模块名是index:
原先的伪静态规则:
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}调整修改nginx配置为:
if (!-e $request_filename) {
rewrite ^/admin(.*)$ /index.php?s=/admin$1;
rewrite ^/mobile(.*)$ /index.php?s=/mobile$1;
rewrite ^/api(.*)$ /index.php?s=/api$1;
rewrite ^((?!/index).*)$ /index.php?s=/index$1; # hide url /index
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}然后重启nginx。
这样原地址: http://www.test.com/index/Aboutus/about.html
可以缩短为:http://www.test.com/Aboutus/about.html
就去掉了网址中带有 /index 的默认模块名前缀。
最后,自定义 siteurl() 函数,替换原 url() 函数方法:
/**
* 修正url地址
* @param string $url 原地址
*/
function fixurl($url = '') {
$string = (string) $url;
$hideHomeName = true; // 是否去除url中默认模块名index
$defalutModule = config('app.default_app');
$currentModule = app('http')->getName();
if($hideHomeName && $currentModule == $defalutModule) {
# 去除url中默认模块名index
$search = '/'.$defalutModule.'/';
$pos = stripos($string, $search);
if($pos !== false && substr_count(rtrim($string,'/'), '/') >= 2) {
$string = substr($string, 0, $pos).'/'.substr($string, $pos + strlen($search));
}
}
return $string;
}
/**
* Url生成
* @param string $url 路由地址
* @param array $vars 变量
* @param bool|string $suffix 生成的URL后缀
* @param bool|string $domain 域名
* return string
*/
function siteurl(string $url = '', array $vars = [], $suffix = true, $domain = false) {
$defalutModule = config('app.default_app');
$currentModule = app('http')->getName();
$string = (string) url($url, $vars, $suffix, $domain);
$hideHomeName = true; // 是否去除url中默认模块名index/
if($hideHomeName && $currentModule == $defalutModule) {
# 去除url中默认模块名index
$search = '/'.$defalutModule.'/';
$pos = stripos($string, $search);
if($pos === 0) {
//$string = '/'.ltrim($string, $search);
//$string = '/'.substr($string, strlen($search));
$string = substr($string, 0, $pos). '/'. substr($string, $pos + strlen($search));
}
}
return $string;
}推荐文章
- js实现table行上下移动,并实现数据的排序
- php将一个包含父子关系的扁平化数组转换成树形菜单
- CRM的基本功能模块是什么?如何判断企业是否需要CRM系统?
- 支付宝已支持给微信QQ好友转账 微信支付宝互通何时能实现?
- aliplayer播放器,TcPlayer播放器,xgplayer播放器三款大厂的视频直播播放器对比
- layui上传插件使用exts属性指定上传文件的后缀名,并过滤掉其他格式的文件(格式过滤)
- 微软推出 VS Code for the Web 无需在 PC 上进行安装 打开浏览器就可以开始工作
- composer 镜像操作以及常用命令收集
- Thinkphp6使用Dompdf将HTML转换为PDF,并且支持中文
- HTTP中GET、POST、PUT与DELETE的区别和用法

