Rewrite links
Rewrite URL links in HTML using the HTMLRewriter. This is useful for JAMstack websites.
const OLD_URL = 'developer.mozilla.org';
const NEW_URL = 'mynewdomain.com';
async function handleRequest(req) {
const res = await fetch(req);
const contentType = res.headers.get('Content-Type');
// If the response is HTML, it can be transformed with
// HTMLRewriter -- otherwise, it should pass through
if (contentType.startsWith('text/html')) {
return rewriter.transform(res);
} else {
return res;
}
}
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'));
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});