[英]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)
}
'''
之后在域設置中,我添加了一個工作人員並指定了站點 domain1.com/test/*。 但它沒有用。 請幫忙。 使用說明https://www.cloudsavvyit.com/3660/how-to-create-a-cloudflare-worker-to-redirect-requests/
您有 2 個選項可以在 Cloudflare 中添加重定向:頁面規則和工作人員。
在這兩種情況下,必須代理源域的 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)
}
Workers
選項卡->
Add route
。 將 Route 設置為*.source-domain.com/*
(如果您要匹配多個重定向路徑)或*.source-domain.com/redirecting-path
(如果只有一個)。 選擇您在第 4 步中創建的工作人員。 Save
。如果您沒有被迫使用 Workers 進行重定向,您可以利用 Cloudflare 的Page Rules
功能,這是一種更簡單的無代碼方式。
在 Cloudflare 儀表板中打開源域頁面。
轉到Page Rules
選項卡。
創建新的頁面規則。 在 URL 匹配字段中輸入源域。 如果需要,您可以添加路徑。 選擇301
或302
HTTP 代碼 - 以您的情況為准。 這是一個示例重定向配置:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.