Работник Cloudflare для перенаправления на новый URL не работает - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать блог на своем веб-сайте (в качестве подкаталога / подстраницы) для этого сообщения . Итак, мой веб-сайт размещен здесь , и я хочу этой подстраницы (/ officiano) отображать контент с одного из моих других сайтов - этого пользовательского домена или даже его Домен Netlify.

Я настроил работника Couldflare с маршрутом .remotework2020.com /, и код работника идентичен коду, приведенному в посте. Я вижу, что оценки выполняются правильно (через консольный журнал), однако он просто выдает ошибку 404, когда я go подкаталог.

Может ли кто-нибудь помочь в том, как отладить проблему?

РЕДАКТИРОВАТЬ:

Вставить весь рабочий код ниже:

// keep track of all our blog endpoints here
const myBlog = {
  hostname: "theremoteweekly.com",
  targetSubdirectory: "/officiano",
  assetsPathnames: ["/public/", "/assets/"]
}

async function handleRequest(request) {
  // returns an empty string or a path if one exists
  const formatPath = (url) => {
    const pruned = url.pathname.split("/").filter(part => part)
    return pruned && pruned.length > 1 ? `${pruned.join("/")}` : ""
  }

  const parsedUrl = new URL(request.url)
  const requestMatches = match => new RegExp(match).test(parsedUrl.pathname)

  // if its blog html, get it
  if (requestMatches(myBlog.targetSubdirectory)) {
    console.log("this is a request for a blog document", parsedUrl.pathname)
    const targetPath = formatPath(parsedUrl)
    console.log(targetPath)
    console.log(`https://${myBlog.hostname}/${targetPath}`)
    return fetch(`https://${myBlog.hostname}/${targetPath}`)
  }

  // if its blog assets, get them
  if ([myBlog.assetsPathnames].some(requestMatches)) {
    console.log("this is a request for blog assets", parsedUrl.pathname)
    const assetUrl = request.url.replace(parsedUrl.hostname, myBlog.hostname);

    return fetch(assetUrl)
  }

  console.log("this is a request to my root domain", parsedUrl.host, parsedUrl.pathname);
  // if its not a request blog related stuff, do nothing
  return fetch(request)
}

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
})

1 Ответ

1 голос
/ 26 марта 2020

Похоже, вы настроили своего работника на маршруте *.remotework2020.com/*. Тем не менее, это не соответствует remotework2020.com/officiano, потому что начальная *. часть шаблона не совпадает. Например, шаблон будет соответствовать www.remotework2020.com/officiano, но у вас нет www. в имени вашего хоста.

Попробуйте изменить маршрут на remotework2020.com/*.

...