Rewrite links
Rewrite URL links in HTML using the HTMLRewriter. This is useful for JAMstack websites.
export default {async fetch(request) {const OLD_URL = "developer.mozilla.org";const NEW_URL = "mynewdomain.com";class AttributeRewriter {constructor(attributeName) {this.attributeName = attributeName;}element(element) {const attribute = element.getAttribute(this.attributeName);if (attribute) {element.setAttribute(this.attributeName,attribute.replace(OLD_URL, NEW_URL));}}}const rewriter = new HTMLRewriter().on("a", new AttributeRewriter("href")).on("img", new AttributeRewriter("src"));const res = await fetch(request);const contentType = res.headers.get("Content-Type");// If the response is HTML, it can be transformed with// HTMLRewriter -- otherwise, it should pass throughif (contentType.startsWith("text/html")) {return rewriter.transform(res);} else {return res;}},};
const handler: ExportedHandler = {async fetch(request: Request) {const OLD_URL = "developer.mozilla.org";const NEW_URL = "mynewdomain.com";class AttributeRewriter {constructor(attributeName) {this.attributeName = attributeName;}element(element) {const attribute = element.getAttribute(this.attributeName);if (attribute) {element.setAttribute(this.attributeName,attribute.replace(OLD_URL, NEW_URL));}}}const rewriter = new HTMLRewriter().on("a", new AttributeRewriter("href")).on("img", new AttributeRewriter("src"));const res = await fetch(request);const contentType = res.headers.get("Content-Type");// If the response is HTML, it can be transformed with// HTMLRewriter -- otherwise, it should pass throughif (contentType.startsWith("text/html")) {return rewriter.transform(res);} else {return res;}},};export default handler;