首页 > 解决方案 > 使用 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/'],   

])

标签: javascriptcloudflareworker

解决方案


您正在寻找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/'
}

推荐阅读