Изменить текст строки URL-адреса браузера

У меня есть домен у хостинг-провайдера (только домен). Этот домен указывает на другой веб-адрес:

domain.com-->anotherdomain.dom/path

С другой стороны, я добавил свой домен в свою учетную запись Cloudflare, например:

domain.com-->Cloudflare-->anotherdomain.dom/path

Проблема в том, что после ввода domain.dom текст URL-адреса в строке URL-адреса браузера будет anotherdomain.dom/path, а мне нужно, чтобы он был domain.com.

Возможно ли иметь domain.com в адресной строке браузера? Должен ли я писать какой-то код внутри моего файла .htaccess или что-то внутри anotherdomain.com? Должен ли я что-то делать внутри Cloudflare (может быть, с «воркерами»)?


person Alberto Muñoz Sánchez    schedule 22.04.2020    source источник


Ответы (1)


Похоже, в настоящее время ваш домен domain.com настроен как перенаправление. Когда пользователь посещает domain.com в своем браузере, сервер (Cloudflare) отвечает сообщением: «Вместо этого перейдите на anotherdomain.com/path». Затем браузер действует так, как будто пользователь действительно набрал anotherdomain.com/path в адресной строке.

Похоже, вместо этого вы хотите, чтобы domain.com был прокси. Когда приходит запрос для domain.com, вы хотите, чтобы Cloudflare извлекал контент из anotherdomain.com/path, а затем возвращал этот контент в ответ на первоначальный запрос.

Для этого вам нужно будет использовать Workers. Cloudflare Workers позволяет вам написать произвольный код JavaScript, чтобы сообщить Cloudflare, как обрабатывать HTTP-запросы для вашего домена.

Вот сценарий Worker, который реализует желаемое поведение прокси:

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

async function handleRequest(request) {
  // Parse the original request URL.
  let url = new URL(request.url);

  // Change domain name.
  url.host = "anotherdomain.org";
  // Add path prefix.
  url.pathname = "/path" + url.pathname;

  // Create a new request with the new URL, but
  // copying all other properties from the
  // original request.
  request = new Request(url, request);

  // Send the new request.
  let response = await fetch(request);

  // Use the response to fulfill the original
  // request.
  return response;
}
person Kenton Varda    schedule 22.04.2020