From d57f69ed84877a7c39fb9f34492b7f9364ede6ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=9A=82=E8=9A=81=E4=BA=91?= Date: Sun, 18 Oct 2026 18:15:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96GEO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 59 ++++++++++++ .../xiaomayi/web/config/MyWebMvcConfig.java | 8 +- .../web/controller/GoodsController.java | 9 +- .../web/controller/IndexController.java | 3 +- .../web/controller/PaymentController.java | 2 +- .../web/controller/UserController.java | 7 +- .../src/main/resources/application.yml | 7 ++ .../configs/application-security.yml | 6 +- .../main/resources/static/assets/css/main.css | 49 +++++++++- .../main/resources/static/assets/js/common.js | 5 + .../src/main/resources/static/llms.txt | 46 +++++++++ .../src/main/resources/static/robots.txt | 32 +++++++ .../src/main/resources/static/sitemap.xml | 39 ++++++++ .../src/main/resources/templates/403.html | 2 +- .../src/main/resources/templates/404.html | 2 +- .../main/resources/templates/book/index.html | 4 +- .../main/resources/templates/copyright.html | 4 +- .../src/main/resources/templates/forget.html | 4 +- .../main/resources/templates/goods/buy.html | 4 +- .../resources/templates/goods/detail.html | 4 +- .../src/main/resources/templates/index.html | 86 +++++++++++++++-- .../src/main/resources/templates/index2.html | 4 +- .../src/main/resources/templates/index3.html | 84 ++++++++++++++-- .../src/main/resources/templates/login.html | 4 +- .../src/main/resources/templates/login2.html | 4 +- .../main/resources/templates/order/pay.html | 2 +- .../resources/templates/order/pay_wx.html | 2 +- .../resources/templates/order/pay_wx2.html | 2 +- .../resources/templates/plugin/index.html | 4 +- .../resources/templates/product/index.html | 4 +- .../templates/public/common_header.html | 10 +- .../resources/templates/public/footer.html | 18 +++- .../resources/templates/public/header.html | 95 ++++++++++++------- .../main/resources/templates/register.html | 4 +- .../resources/templates/service/index.html | 4 +- .../main/resources/templates/user/coupon.html | 4 +- .../main/resources/templates/user/info.html | 4 +- .../main/resources/templates/user/order.html | 4 +- .../resources/templates/user/password.html | 2 +- 39 files changed, 531 insertions(+), 106 deletions(-) create mode 100644 CLAUDE.md create mode 100644 xiaomayi-modules/xiaomayi-web/src/main/resources/static/llms.txt create mode 100644 xiaomayi-modules/xiaomayi-web/src/main/resources/static/robots.txt create mode 100644 xiaomayi-modules/xiaomayi-web/src/main/resources/static/sitemap.xml diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..cb68fa4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,59 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## 项目概述 + +小蚂蚁云后台管理系统 (RXThinkCMF):Spring Boot 3.3 (JDK 17) 多模块 Maven 后端 + Vue 3 管理后台前端 (`xiaomayi-ui/`)。注释与提交信息使用中文;Java 文件带版权头,不要删除。 + +## 常用命令 + +### 后端(Maven,无 mvnw,需系统 mvn) + +- 全量构建:`mvn clean package`(默认 `local` profile) +- 指定环境构建:`mvn clean package -P prod`(可选:`local|dev|test|uat|prod`) +- 运行后台应用:`java -jar xiaomayi-modules/xiaomayi-admin/target/xiaomayi-admin.jar`,或 IDE 直接运行主类 `com.xiaomayi.admin.XMAdminApplication` +- 单独构建某模块:`mvn clean package -pl xiaomayi-services/xiaomayi-system -am`(`-am` 连带构建依赖模块) +- 测试实际被跳过:admin 的 surefire 配置 `skipTests=true`,父 POM 配置 compiler 跳过 test 编译,仓库中基本没有测试 + +### 前端(`xiaomayi-ui/`,包管理器 pnpm) + +- 安装依赖:`pnpm install` +- 开发:`pnpm dev`(端口 8001,代理 `/api` → `http://127.0.0.1:8081/api`,见 `.env.development` 的 `VITE_PROXY`) +- 构建:`pnpm build` 或 `pnpm build:test` +- 类型检查:`pnpm type:check` +- Lint:`pnpm lint:eslint`、`pnpm lint:prettier`、`pnpm lint:stylelint` + +## 后端架构 + +模块依赖方向:`xiaomayi-modules`(可运行应用)→ `xiaomayi-services`(业务模块)→ `xiaomayi-common`(基础组件)。 + +- **`xiaomayi-common/`**:约 30 个能力组件(security、mybatis、redis、oss/minio、sms、email、alipay/wxpay、websocket、tenant、excel、generator 等)+ BOM 模块 `xiaomayi-all`。所有第三方依赖版本集中在 `xiaomayi-common/pom.xml` 的 dependencyManagement 中管理,新增依赖版本加在这里。 +- **`xiaomayi-services/`**:业务领域模块(system、cms、product、order、member、logistics、invoice、quartz、generator),每层结构为 `dto / entity / mapper / service`,Mapper XML 在各模块 `src/main/resources/mapper/`。 +- **`xiaomayi-modules/`**:可运行应用。`xiaomayi-admin`(后台管理,主类 `XMAdminApplication`,端口 8081,context-path `/api`);`xiaomayi-web`(前台网站 `XMWebApplication`);`xiaomayi-uniapp`(客户端接口 `UniAppApplication`)。 +- **`xiaomayi-visual/xiaomayi-monitor`**:监控应用。 + +后端约定: + +- Controller 位于应用模块(主要在 `xiaomayi-admin/.../controller/<业务域>/`),注入 services 模块的 Service;不要把 Controller 写进 services 模块。 +- 统一响应体 `com.xiaomayi.core.utils.R`:`{code, msg, data, count}`,`code=0` 成功、`1` 失败,分页总数放在 `count`。前端 axios 封装按 `code === 0` 判断成功(`xiaomayi-ui/src/utils/http/axios/`)。 +- 认证用 Spring Security;放行 URL 在 `xiaomayi-admin/src/main/resources/configs/application-security.yml`。 +- ORM 为 MyBatis(XML mapper),多数据源 dynamic-datasource + Druid;默认主库 MySQL,库名 `rxthinkcmf.web`,初始化脚本 `document/rxthinkcmf.web.sql`。 +- 配置分两层:`application.yml` 通过 `spring.config.import` 导入公共配置 `configs/application-*.yml`(mybatis、security、logger、tenant、payment 等)和环境配置 `configs//application-*.yml`(redis、aliyun、minio、token、email 等)。`spring.profiles.active` 由 Maven profile 的 `@package.environment@` 资源过滤注入——改 `application-.yml` 的内容时注意它是被 Maven filtering 处理的资源。 +- 版本号统一为 `${revision}`(当前 2.0.0),由 flatten-maven-plugin 解析,不要在子 POM 中硬编码版本。 +- 代码生成器:`GeneratorController` + Freemarker 模板(`xiaomayi-admin/src/main/resources/templates/`,含 `modules/` 后端模板和 `ui/` 前端模板)。 + +## 前端架构(xiaomayi-ui) + +Vue 3 + Vite 3 + TypeScript + Element Plus + Pinia,结构类似 vben-admin。 + +- 接口定义在 `src/api/<域>/<模块>.ts`,页面在 `src/views/<域>/`;`@` 别名指向 `src/`。 +- 动态路由:登录后由后端菜单接口(`getRouters`)返回菜单树,`src/router/generator-routers.ts` 用 `import.meta.glob('../views/**/*.{vue,tsx}')` 把菜单里的 `component` 路径字符串解析成组件。**新增页面必须放在 `src/views/` 下,且菜单表中配置对应路径**,否则路由无法加载。 +- 请求走 `src/utils/http/axios/` 封装,接口前缀 `VITE_GLOB_API_URL_PREFIX=/api`,与后端 context-path 对应。 +- 环境变量在根目录 `.env`、`.env.development`、`.env.test`、`.env.production`。 + +## 部署 + +- 根目录 `Dockerfile` + `docker-compose.yml`:构建并运行 admin 应用(挂载 `./logs`、`./upload`)。 +- `.jenkins/`:CI 配置(Jenkinsfile 调用内部 share-library 的 `pipelineJDKService`)。 +- `docker/deploy.sh`:从 Harbor 拉取镜像并 `docker compose up`。 diff --git a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/config/MyWebMvcConfig.java b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/config/MyWebMvcConfig.java index ed66935..7f2209a 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/config/MyWebMvcConfig.java +++ b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/config/MyWebMvcConfig.java @@ -60,7 +60,9 @@ public class MyWebMvcConfig implements WebMvcConfigurer { .excludePathPatterns("/wxpay/updateWxOrder") .excludePathPatterns("/alipay/alipayNotify") .excludePathPatterns("/alipay/updateAlipayOrder") - .excludePathPatterns("/auth/**"); + .excludePathPatterns("/auth/**") + // SEO/GEO 爬虫文件放行 + .excludePathPatterns("/robots.txt", "/sitemap.xml", "/llms.txt"); // 多租户拦截器 registry.addInterceptor(tenantInterceptor) @@ -79,5 +81,9 @@ public class MyWebMvcConfig implements WebMvcConfigurer { // 当输入域名是可以自动跳转到默认指定的网页,可以配置动态参数 // registry.addViewController("/").setViewName("forward:" + indexUrl); registry.addViewController("/favicon.ico").setViewName("forward:/static/favicon.ico"); + // SEO/GEO 爬虫文件按惯例须在站点根路径(robots.txt 不会去抓 /static/robots.txt) + registry.addViewController("/robots.txt").setViewName("forward:/static/robots.txt"); + registry.addViewController("/sitemap.xml").setViewName("forward:/static/sitemap.xml"); + registry.addViewController("/llms.txt").setViewName("forward:/static/llms.txt"); } } diff --git a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/GoodsController.java b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/GoodsController.java index 470f700..d68a82f 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/GoodsController.java +++ b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/GoodsController.java @@ -1,6 +1,5 @@ package com.xiaomayi.web.controller; -import com.xiaomayi.core.config.AppConfig; import com.xiaomayi.core.utils.StringUtils; import com.xiaomayi.member.service.MemberCouponService; import com.xiaomayi.member.vo.membercoupon.MemberCouponVO; @@ -61,6 +60,12 @@ public class GoodsController extends BaseController { model.addAttribute("product", product); // 网站标题 model.addAttribute("title", product.getProductTitle()); + // 页面描述(SEO,去除简介中的HTML标签) + if (StringUtils.isNotNull(product.getProductDesc())) { + model.addAttribute("desc", product.getProductDesc().replaceAll("<[^>]*>", "").trim()); + } + // 规范链接(SEO) + model.addAttribute("canonical", "https://www.rxthink.cn/goods/detail/" + id); } // 商品规格 @@ -94,7 +99,7 @@ public class GoodsController extends BaseController { @GetMapping("/buy/{productId}/{specName}/{validName}") public String buy(@PathVariable("productId") Integer productId, @PathVariable("specName") String specName, @PathVariable("validName") String validName, Model model) { // 网站标题 - model.addAttribute("title", String.format("订单确认 - %s", AppConfig.getName())); + model.addAttribute("title", "订单确认"); // 商品信息 Product product = productService.getInfo(productId); if (StringUtils.isNotNull(product)) { diff --git a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/IndexController.java b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/IndexController.java index 5962ac1..ba2a684 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/IndexController.java +++ b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/IndexController.java @@ -1,6 +1,5 @@ package com.xiaomayi.web.controller; -import com.xiaomayi.core.config.AppConfig; import com.xiaomayi.core.utils.R; import com.xiaomayi.email.annotation.EmailLog; import com.xiaomayi.email.enums.EmailType; @@ -77,7 +76,7 @@ public class IndexController extends BaseController { @GetMapping("/copyright") public String copyright(Model model) { // 网站标题 - model.addAttribute("title", String.format("版权说明 - %s", AppConfig.getName())); + model.addAttribute("title", "版权说明"); return ModelViewEnum.COPYRIGHT_HTML.getValue(); } diff --git a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/PaymentController.java b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/PaymentController.java index 731dedb..4933b23 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/PaymentController.java +++ b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/PaymentController.java @@ -104,7 +104,7 @@ public class PaymentController extends BaseController { // 付款二维码地址(有效期2个小时) order.setCodeUrl(result.get("code_url")); model.addAttribute("order", order); - model.addAttribute("title", "微信支付 - 收银台"); + model.addAttribute("title", "微信支付收银台"); return ModelViewEnum.WEIXIN_PAYMENT_HTML.getValue(); } return "404"; diff --git a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/UserController.java b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/UserController.java index 59778ad..98041bb 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/UserController.java +++ b/xiaomayi-modules/xiaomayi-web/src/main/java/com/xiaomayi/web/controller/UserController.java @@ -1,6 +1,5 @@ package com.xiaomayi.web.controller; -import com.xiaomayi.core.config.AppConfig; import com.xiaomayi.core.utils.R; import com.xiaomayi.member.dto.member.MemberCheckSmsDTO; import com.xiaomayi.member.dto.member.MemberInfoUpdateDTO; @@ -48,7 +47,7 @@ public class UserController extends BaseController { @GetMapping("/order") public String order(Model model) { // 网站标题 - model.addAttribute("title", String.format("我的订单 - %s", AppConfig.getName())); + model.addAttribute("title", "我的订单"); return ModelViewEnum.ORDER_LIST_HTML.getValue(); } @@ -62,7 +61,7 @@ public class UserController extends BaseController { @GetMapping("/coupon") public String coupon(Model model) { // 网站标题 - model.addAttribute("title", String.format("我的优惠券 - %s", AppConfig.getName())); + model.addAttribute("title", "我的优惠券"); // 获取待使用优惠券 List couponUserList = memberCouponService.getCouponList(MemberUtils.getMemberId(), 0); // 获取已使用优惠券 @@ -85,7 +84,7 @@ public class UserController extends BaseController { @GetMapping("/info") public String info(Model model) { // 网站标题 - model.addAttribute("title", String.format("个人信息 - %s", AppConfig.getName())); + model.addAttribute("title", "个人信息"); return ModelViewEnum.USER_INFO_HTML.getValue(); } diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/application.yml b/xiaomayi-modules/xiaomayi-web/src/main/resources/application.yml index 1f276c5..aafca5d 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/application.yml +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/application.yml @@ -53,3 +53,10 @@ spring: #exclude: WEB-INF/**,static/** # 监控额外的路径(优先于exclude) #additional-paths: src/main/java + +# 服务配置(与各环境 application-.yml 中的 server 配置合并) +server: + servlet: + # 会话跟踪仅使用 Cookie,禁用 URL 重写,避免静态资源 URL 携带 ;jsessionid(利于 SEO 与缓存) + session: + tracking-modes: cookie diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/configs/application-security.yml b/xiaomayi-modules/xiaomayi-web/src/main/resources/configs/application-security.yml index de888fb..aee30f5 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/configs/application-security.yml +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/configs/application-security.yml @@ -25,4 +25,8 @@ security: - /favicon.ico - /*.html - /*.css - - /*.js \ No newline at end of file + - /*.js + # SEO/GEO 爬虫文件 + - /robots.txt + - /sitemap.xml + - /llms.txt \ No newline at end of file diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/css/main.css b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/css/main.css index 93a267b..0cf2929 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/css/main.css +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/css/main.css @@ -947,6 +947,15 @@ body .layui-util-face .layui-layer-content { display: inline-block } +.ew-footer p .footer-brand-icon { + width: 20px; + height: 20px; + fill: rgba(255, 255, 255, 0.4); + vertical-align: middle; + margin-right: 10px; + display: inline-block +} + .ew-footer p.img-group { position: relative; padding-left: 150px; @@ -965,7 +974,45 @@ body .layui-util-face .layui-layer-content { } .ew-footer .footer-copyright { - padding-top: 10px + padding-top: 10px; + clear: both +} + +/* 首页常见问题区块 */ +.faq-row { + display: flex; + flex-wrap: wrap +} + +.faq-row > .layui-col-md6 { + display: flex +} + +.faq-item { + background: #f8f9fb; + border-radius: 6px; + padding: 25px 30px; + margin-bottom: 30px; + flex: 1; + box-sizing: border-box +} + +.faq-item h3 { + font-size: 17px; + font-weight: 600; + color: #333; + margin: 18px 0 8px +} + +.faq-item h3:first-child { + margin-top: 0 +} + +.faq-item p { + color: #666; + font-size: 14px; + line-height: 28px; + margin: 0 } .ew-banner { diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/js/common.js b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/js/common.js index fb2b333..e543109 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/js/common.js +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/assets/js/common.js @@ -14,6 +14,11 @@ layui.config({ navIds.push($(this).attr('nav-id')); }); + // 导航链接保留 href 供 SEO/爬虫发现内链,点击仍由 lay-href 逻辑(平滑滚动/页面跳转)接管 + $(document).on('click', '.ew-header a[lay-href]', function (e) { + e.preventDefault(); + }); + // 导航点击事件 element.on('nav(ew-header-nav)', function (elem) { var layHref = $(elem).attr('lay-href'); diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/llms.txt b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/llms.txt new file mode 100644 index 0000000..9788a59 --- /dev/null +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/llms.txt @@ -0,0 +1,46 @@ +# RXThinkCMF + +> RXThinkCMF 是小蚂蚁云研发团队打造的企业级后台管理系统与敏捷开发框架,前后端分离、开箱即用,帮助企业和开发者快速构建中大型后台应用。 + +官网: https://www.rxthink.cn +官方邮箱: rxthinkcmf@163.com +研发团队: 小蚂蚁云研发团队 +Gitee 仓库: https://gitee.com/rxthinkcmf +GitHub 仓库: https://github.com/rxthinkcmf + +## 核心能力 + +- 后端支持 ThinkPHP6、ThinkPHP8、Laravel13 等框架 +- 前端集成 Layui、ElementPlus、AntDesign、NaiveUI、ArcoDesign 等主流 UI 组件库 +- 前后端分离架构,集成 RBAC 权限体系、多租户、代码生成器、工作流等企业级功能 +- 支持 MySQL、PostgreSQL、SqlServer、Sqlite 等多种数据库驱动 + +## 主要页面 + +- [首页](https://www.rxthink.cn/): 产品概览、框架优势、价格与选择指南 +- [Layui 混编版](https://www.rxthink.cn/goods/detail/1): RXThinkCMF 混编版框架 Layui 版 +- [ElementPlus 版](https://www.rxthink.cn/goods/detail/2): RXThinkCMF 前后端分离框架 ElementPlus 版本 +- [AntDesign 版](https://www.rxthink.cn/goods/detail/3): RXThinkCMF 前后端分离框架 AntDesign 版本 +- [NaiveUI 版](https://www.rxthink.cn/goods/detail/4): RXThinkCMF 前后端分离框架 NaiveUI 版本 +- [版权说明](https://www.rxthink.cn/copyright): 许可与版权声明 + +## 源码仓库 + +- [Gitee 仓库](https://gitee.com/rxthinkcmf): 国内用户首选,含 Issues 与更新动态 +- [GitHub 仓库](https://github.com/rxthinkcmf): 国际镜像仓库 + +## 开发文档 + +- ThinkPHP6: http://docs.thinkphp6.elevue.rxthink.cn (ElementPlus)、http://docs.thinkphp6.antdvue.rxthink.cn (AntDesign)、http://docs.thinkphp6.naivevue.rxthink.cn (NaiveUI) +- ThinkPHP8: http://docs.thinkphp8.elevue.rxthink.cn (ElementPlus)、http://docs.thinkphp8.antdvue.rxthink.cn (AntDesign)、http://docs.thinkphp8.naivevue.rxthink.cn (NaiveUI) +- Laravel13: http://docs.laravel13.elevue.rxthink.cn (ElementPlus)、http://docs.laravel13.antdvue.rxthink.cn (AntDesign)、http://docs.laravel13.naivevue.rxthink.cn (NaiveUI) + +## 在线演示 + +- ThinkPHP6: http://manage.thinkphp6.elevue.rxthink.cn (ElementPlus)、http://manage.thinkphp6.antdvue.rxthink.cn (AntDesign)、http://manage.thinkphp6.naivevue.rxthink.cn (NaiveUI) +- ThinkPHP8: http://manage.thinkphp8.elevue.rxthink.cn (ElementPlus)、http://manage.thinkphp8.antdvue.rxthink.cn (AntDesign)、http://manage.thinkphp8.naivevue.rxthink.cn (NaiveUI) +- Laravel13: http://manage.laravel13.elevue.rxthink.cn (ElementPlus)、http://manage.laravel13.antdvue.rxthink.cn (AntDesign)、http://manage.laravel13.naivevue.rxthink.cn (NaiveUI) + +## 说明 + +以上内容基于 RXThinkCMF 官方网站。引用时请以官网页面为准,并注明来源 https://www.rxthink.cn。 diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/robots.txt b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/robots.txt new file mode 100644 index 0000000..12ccc22 --- /dev/null +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/robots.txt @@ -0,0 +1,32 @@ +# RXThinkCMF 官网 robots.txt +# https://www.rxthink.cn + +User-agent: * +Allow: / +Disallow: /login +Disallow: /register +Disallow: /forget +Disallow: /user/ +Disallow: /order/ +Disallow: /captcha + +# 生成式引擎优化(GEO):显式放行主流 AI/LLM 爬虫 +User-agent: GPTBot +Allow: / + +User-agent: ClaudeBot +Allow: / + +User-agent: PerplexityBot +Allow: / + +User-agent: Google-Extended +Allow: / + +User-agent: Bytespider +Allow: / + +User-agent: Baiduspider +Allow: / + +Sitemap: https://www.rxthink.cn/sitemap.xml diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/static/sitemap.xml b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/sitemap.xml new file mode 100644 index 0000000..c4465e4 --- /dev/null +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/static/sitemap.xml @@ -0,0 +1,39 @@ + + + + https://www.rxthink.cn/ + 2026-10-18 + weekly + 1.0 + + + https://www.rxthink.cn/goods/detail/1 + 2026-10-18 + monthly + 0.7 + + + https://www.rxthink.cn/goods/detail/2 + 2026-10-18 + monthly + 0.7 + + + https://www.rxthink.cn/goods/detail/3 + 2026-10-18 + monthly + 0.7 + + + https://www.rxthink.cn/goods/detail/4 + 2026-10-18 + monthly + 0.7 + + + https://www.rxthink.cn/copyright + 2026-10-18 + yearly + 0.3 + + diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/403.html b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/403.html index 050cdfb..3cb2644 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/403.html +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/403.html @@ -1,7 +1,7 @@ -
+
diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/404.html b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/404.html index 4226b3f..785e22d 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/404.html +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/404.html @@ -1,7 +1,7 @@ -
+
diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/book/index.html b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/book/index.html index 6661cd5..55d6da6 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/book/index.html +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/book/index.html @@ -1,7 +1,7 @@ - + -
+ - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/register.html b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/register.html index 1e3a654..5659708 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/register.html +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/register.html @@ -1,7 +1,7 @@ - + -
+
diff --git a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/service/index.html b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/service/index.html index 4bc6be2..83f30b5 100644 --- a/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/service/index.html +++ b/xiaomayi-modules/xiaomayi-web/src/main/resources/templates/service/index.html @@ -1,7 +1,7 @@ - + -
+