在 cloudflare worker 中从一个域重定向到另一个域不起作用
Redirect from one domain to another in cloudflare workers does not work
我需要配置与 domain1.com/test// 模式匹配的请求由 domain2.com 应用程序提供服务。
试图按如下方式配置它。
创建了一个工人,添加了代码
'''
const redirectMap = new Map([
['/test1', 'domain2.com'],
])
addEventListener('fetch', async event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
let requestURL = new URL(request.url)
let path = requestURL.pathname.split('/redirect')[1]
let location = redirectMap.get(path)
if (location) {
return Response.redirect(location, 301)
}
return fetch(request)
}
'''
之后在域设置中,我添加了一个worker并指定了站点domain1.com/test/*。
但它没有用。请帮助。
使用说明 https://www.cloudsavvyit.com/3660/how-to-create-a-cloudflare-worker-to-redirect-requests/
您有 2 个选项可以在 Cloudflare 中添加重定向:Page Rules 和 Workers。
在这两种情况下,都必须代理源域的 DNS 记录(橙色云开启)。
工人
在 Cloudflare 仪表板中打开源域页面。
转到 Workers
选项卡。
Manage Workers
->
Create a Worker
添加以下代码。在匹配的路径上,它会将访问者重定向到目标 URL。如果没有匹配请求将发送到源 (source-domain.com).
const redirectHttpCode = 301
const redirectMap = new Map([
['/redirecting-path', 'https://target-domain.com'],
])
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
const url = new URL(request.url)
const { pathname } = url
const targetUrl = redirectMap.get(pathname)
if (targetUrl) {
return Response.redirect(targetUrl, redirectHttpCode)
}
return fetch(request)
}
- 返回源域
->
Add route
的 Workers
选项卡。将 Route 设置为 *.source-domain.com/*
(如果您要匹配多个重定向路径)或 *.source-domain.com/redirecting-path
(如果只有一个)。 Select 您在步骤 4 中创建的工作器。Save
。
页面规则
如果您不被迫使用 Workers 进行重定向,您可以利用 Cloudflare 的 Page Rules
功能,这是一种更简单的无代码方式。
在 Cloudflare 仪表板中打开源域页面。
转到 Page Rules
选项卡。
创建一个新的页面规则。在 URL 匹配字段中输入源域。如果需要,您可以添加路径。选择 301
或 302
HTTP 代码 - 以适合您的情况为准。这是一个重定向配置示例:
我需要配置与 domain1.com/test// 模式匹配的请求由 domain2.com 应用程序提供服务。 试图按如下方式配置它。 创建了一个工人,添加了代码
'''
const redirectMap = new Map([
['/test1', 'domain2.com'],
])
addEventListener('fetch', async event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
let requestURL = new URL(request.url)
let path = requestURL.pathname.split('/redirect')[1]
let location = redirectMap.get(path)
if (location) {
return Response.redirect(location, 301)
}
return fetch(request)
}
'''
之后在域设置中,我添加了一个worker并指定了站点domain1.com/test/*。 但它没有用。请帮助。 使用说明 https://www.cloudsavvyit.com/3660/how-to-create-a-cloudflare-worker-to-redirect-requests/
您有 2 个选项可以在 Cloudflare 中添加重定向:Page Rules 和 Workers。
在这两种情况下,都必须代理源域的 DNS 记录(橙色云开启)。
工人
在 Cloudflare 仪表板中打开源域页面。
转到
Workers
选项卡。Manage Workers
->
Create a Worker
添加以下代码。在匹配的路径上,它会将访问者重定向到目标 URL。如果没有匹配请求将发送到源 (source-domain.com).
const redirectHttpCode = 301
const redirectMap = new Map([
['/redirecting-path', 'https://target-domain.com'],
])
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
const url = new URL(request.url)
const { pathname } = url
const targetUrl = redirectMap.get(pathname)
if (targetUrl) {
return Response.redirect(targetUrl, redirectHttpCode)
}
return fetch(request)
}
- 返回源域
->
Add route
的Workers
选项卡。将 Route 设置为*.source-domain.com/*
(如果您要匹配多个重定向路径)或*.source-domain.com/redirecting-path
(如果只有一个)。 Select 您在步骤 4 中创建的工作器。Save
。
页面规则
如果您不被迫使用 Workers 进行重定向,您可以利用 Cloudflare 的 Page Rules
功能,这是一种更简单的无代码方式。
在 Cloudflare 仪表板中打开源域页面。
转到
Page Rules
选项卡。创建一个新的页面规则。在 URL 匹配字段中输入源域。如果需要,您可以添加路径。选择
301
或302
HTTP 代码 - 以适合您的情况为准。这是一个重定向配置示例: