ThinkPHP6伪静态设置并隐藏默认模块名,如home
发表于:2021-11-03 22:47:43浏览:2709次
查看和修改默认模块名:
查看配置在 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; }
推荐文章
- ref, toRef, toRefs,reactive, defineComponent, computed, unref, toRaw, watchEffect, onUpdated 10个VUE3前端API总结
- 利用微软的Office Online实现Office文档在线预览功能
- 阿里云ECS云服务器CentOS7云盘在线扩容操作
- linux服务器定时任务crontab命令用法详解
- 简单几行代码实现JS复制文字到剪切板的功能,兼容IE浏览器
- 微软Edge浏览器在100版本里程碑之前的最后一个稳定版Edge99发布
- 开源的OA办公系统 — 勾股OA4.09.10 发布
- Thinkphp6使用mPdf实现生成pdf文件
- DevOps已向业务进阶,如何实现项目研发效率的提升?
- 码云(gitee)配置git禁止直接提交到master分支的方法