Files
hjc-web/server/middleware/z-news-detail-redirect.ts
gxwebsoft 2b69686795 feat(app): 添加多模板关于我们页面及相关路由和404页面
- 新增404页面,优化未找到页面体验,避免被搜索引擎索引
- 增加文件代理接口,隐藏真实文件服务器地址,支持文件请求代理
- 实现/article、/case、/product及/page动态路由兼容列表与详情展示
- 添加动态CMS页面兼容入口处理旧式路径,统一路由与SEO设置
- 新增模板1、模板7、模板2、模板3关于我们页面,实现多模板支持
- 模板增强支持CMS单页内容加载及SEO信息动态设置
- 配置环境变量及Git忽略文件规则辅助开发和构建环境管理
2026-09-08 12:13:44 +08:00

38 lines
1.2 KiB
TypeScript

import { sendRedirect } from 'h3'
/**
* 旧模块名 → 新模块名(按模块名单数命名)301 重定向
*
* 2026-07-20 起 URL 规范统一为模块名单数:
* 新闻 /article、产品 /product、案例 /case(详情与栏目同一词根,靠 navId 判定)。
* 改名前的旧链接需兼容,避免已收录 / 外链失效:
* /news、/newss → /article
* /products → /product
* /cases → /case
* 新规范路径(/article、/product、/case)不在映射内,不重定向。
*/
export default defineEventHandler((event) => {
const path = event.path || ''
if (
path.startsWith('/api/') ||
path.startsWith('/_') ||
/\.(?:ico|png|jpe?g|gif|svg|css|js|map|woff2?|ttf|txt)$/i.test(path)
) {
return
}
const OLD_TO_NEW: Array<[string, string]> = [
['/news', '/article'],
['/newss', '/article'],
['/products', '/product'],
['/cases', '/case']
]
for (const [oldPrefix, newPrefix] of OLD_TO_NEW) {
if (path === oldPrefix || path.startsWith(oldPrefix + '/')) {
const rest = path.slice(oldPrefix.length) // '' 或 '/xxx'
return sendRedirect(event, newPrefix + rest, 301)
}
}
})