03.【个人网站】如何做网站自定义页面 URL 映射

2024-09-04 18:20

本文主要是介绍03.【个人网站】如何做网站自定义页面 URL 映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pageUrlOverrides 是一个配置对象,通常用于在 Notion 集成或其他内容管理系统(CMS)中定义自定义页面 URL 映射。这些映射允许开发者为页面设置自定义 URL,而不是使用自动生成的默认 URL。

源码:https://github.com/Jessie-jzn/Jessie-Blog.dev
网站:https://www.jessieontheroad.com/

示例场景

假设有一个 Notion 页面,默认 URL 是 https://www.notion.so/my-page-id,希望它在网站上显示为 https://www.mywebsite.com/custom-urlpageUrlOverrides 就是为了解决这种需求的。

具体用途

  1. 自定义 URL 映射:允许将自动生成的 URL 替换为更友好的自定义 URL。
  2. SEO 优化:通过设置简洁、可读性强的 URL,有助于搜索引擎优化(SEO)。
  3. 用户体验:让用户更容易记住和访问特定页面。

配置示例

以下是一个 pageUrlOverrides 的配置示例:

const pageUrlOverrides = {'/about': '1234abcd5678efgh9012ijkl', // 自定义 URL "/about" 对应 Notion 页面 ID "1234abcd5678efgh9012ijkl"'/contact': '9876zyxw5432vuts1098rqp'  // 自定义 URL "/contact" 对应 Notion 页面 ID "9876zyxw5432vuts1098rqp"
};

在这个示例中:

  • 当用户访问 https://www.mywebsite.com/about 时,实际上会显示 Notion 页面 ID 为 1234abcd5678efgh9012ijkl 的内容。
  • 当用户访问 https://www.mywebsite.com/contact 时,实际上会显示 Notion 页面 ID 为 9876zyxw5432vuts1098rqp 的内容。

如何使用

在实际使用中,可能需要一个函数来处理这些自定义 URL 映射,并将其应用到的项目中。以下是一个示例函数,结合之前的 cleanPageUrlMap 函数,演示如何使用 pageUrlOverrides

import { parsePageId } from 'notion-utils';interface PageUrlOverridesMap {[key: string]: string;
}const pageUrlOverrides: PageUrlOverridesMap = {'/about': '1234abcd5678efgh9012ijkl','/contact': '9876zyxw5432vuts1098rqp'
};/*** 清理页面URL映射** 该函数用于清理页面URL映射,确保每个页面ID和URI都是有效的。它会将相对路径URI转换为对象键,并使用解析后的UUID作为值。** @param {PageUrlOverridesMap} pageUrlMap - 页面URL映射对象,键为URI,值为页面ID。* @param {Object} options - 可选参数对象。* @param {string} options.label - 用于错误消息中的标签。* @returns {PageUrlOverridesMap} - 返回清理后的页面URL映射对象。* @throws {Error} - 当页面ID或URI无效时抛出错误。*/
function cleanPageUrlMap(pageUrlMap: PageUrlOverridesMap,{ label }: { label: string }
): PageUrlOverridesMap {return Object.keys(pageUrlMap).reduce((acc, uri) => {const pageId = pageUrlMap[uri];const uuid = parsePageId(pageId, { uuid: false });if (!uuid) {throw new Error(`Invalid ${label} page id "${pageId}"`);}if (!uri) {throw new Error(`Missing ${label} value for page "${pageId}"`);}if (!uri.startsWith('/')) {throw new Error(`Invalid ${label} value for page "${pageId}": value "${uri}" should be a relative URI that starts with "/"`);}const path = uri.slice(1);return {...acc,[path]: uuid};}, {} as PageUrlOverridesMap);
}const cleanedPageUrlOverrides = cleanPageUrlMap(pageUrlOverrides, { label: 'pageUrlOverrides' });
console.log(cleanedPageUrlOverrides);

总结

pageUrlOverrides 允许为 Notion 页面设置自定义 URL,从而提高 SEO 和用户体验。通过使用辅助函数(如 cleanPageUrlMap),可以确保这些自定义 URL 映射的有效性,并将其应用到的网站项目中。

这篇关于03.【个人网站】如何做网站自定义页面 URL 映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136680

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总