javascript - 使用 Cloudflare Worker 重定向多个 URL
问题描述
我有一个用例,我需要将多个子域重定向到它们各自的目的地,例如。alpha.domain.com -> www.domain.com/alpha,以及 external.domain.com -> www.external.com。
我查看了这个https://developers.cloudflare.com/workers/templates/pages/bulk_redirects/但是这是针对路径重定向的。我对如何修改它以适应我的用例一无所知。任何帮助将不胜感激。
async function handleRequest(request) {
let requestURL = new URL(request.url)
let sourceURL = requestURL[1]
let destination = redirectMap.get(path)
if (requestURL) {
return Response.redirect(destination, 301)
}
}
addEventListener('fetch', async event => {
event.respondWith(handleRequest(event.request))
})
const redirectMap = new Map([
['alpha.domain.com', 'https://www.example.com/alpha/'],
['external.domain.com', 'https://www.example.com/'],
])
解决方案
您正在寻找requestURL.host
将它们放在一起,您将需要这样的东西:
async function handleRequest(request) {
let requestURL = new URL(request.url);
let destination = redirects[requestURL.host];
if (destination) {
return Response.redirect(destination, 301);
}
//determine what do do if there is no host match here
return Response.redirect('https://www.default.com', 301);
}
addEventListener('fetch', async event => {
event.respondWith(handleRequest(event.request))
})
const redirects = {
'alpha.domain.com' : 'https://www.example.com/alpha/',
'external.domain.com' : 'https://www.example.com/'
}
推荐阅读
- amazon-web-services - 如何使用 fluentd fluent-plugin-rewrite 和 cloudwatch 洞察快速入门?
- java - 为什么我的 java Scanner.nextLine() 代码有时会跳过一行?
- java - ExceptionHandling() 安全配置不起作用
- cellular-network - 有没有办法为蜂窝网络自托管接入点?
- php - 无法将文件存储在我的存储中 - laravel
- python - 如何更改将行值添加到列的 pd DataFrame 的结构?
- php - 如何在电子邮件中发送嵌入的pdf
- node.js - 推送到MongoDB中的数组
- python - 使用 Python 生成点并丢弃前几个点
- sql - 在 SQL Server 中的计算列上运行总计