簡體   English   中英

在 cloudflare 工作人員中從一個域重定向到另一個域不起作用

[英]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 記錄(橙色雲開啟)。

工人

  1. 在 Cloudflare 儀表板中打開源域頁面。

  2. 轉到“ Workers選項卡。

  3. Manage Workers -> Create a Worker

  4. 添加以下代碼。 在匹配路徑上,它會將訪問者重定向到目標 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)
}
  1. 返回源域的Workers選項卡-> Add route 將 Route 設置為*.source-domain.com/* (如果您要匹配多個重定向路徑)或*.source-domain.com/redirecting-path (如果只有一個)。 選擇您在第 4 步中創建的工作人員。 Save

在此處輸入圖片說明

頁面規則

如果您沒有被迫使用 Workers 進行重定向,您可以利用 Cloudflare 的Page Rules功能,這是一種更簡單的無代碼方式。

  1. 在 Cloudflare 儀表板中打開源域頁面。

  2. 轉到Page Rules選項卡。

  3. 創建新的頁面規則。 在 URL 匹配字段中輸入源域。 如果需要,您可以添加路徑。 選擇301302 HTTP 代碼 - 以您的情況為准。 這是一個示例重定向配置:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM