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

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。