Изменить текст в строке браузера - PullRequest
0 голосов
/ 22 апреля 2020

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

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 (может быть, с «работниками»)?

1 Ответ

2 голосов
/ 22 апреля 2020

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

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

Для этого вам нужно будет использовать Рабочие. 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;
}
...