Перенаправить на тот же путь в другом домене - PullRequest
0 голосов
/ 04 июля 2018

Как я могу перенаправить все https://www.A.net/Page.html запросы для одной страницы Page.html на соответствующую страницу в другом домене https://www.B.net/Page.html через https://www.A.net/404.html? Github / Gitlab Pages перенаправить все страницы- Не найдены ошибки для последнего. Можно ли каким-то образом получить исходную запрашиваемую страницу и использовать ее в функции Javascript для изменения URL-адреса перенаправления?

В настоящее время я использую что-то вроде следующего HTML-кода для перенаправления «многие к одному», но мне скорее нужно перенаправление «один к одному» (т. Е. Не всегда на одно и то же https://www.B.net/404.html).

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="refresh" content="0; URL=https://www.B.net/404.html">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
        <meta name="viewport" content="width=device-width; initial-scale=1.0"/>
    </head>
    <body>
        You are being redirected to https://www.B.net/404.html <a href="https://www.B.net/404.html">https://www.B.net/404.html</a>
    </body>
</html>

Текущая ситуация (многие-к-одному):

www.A.net/Page1.html -> www.A.net/404.html -> www.B.net/404.html
www.A.net/Page2.html -> www.A.net/404.html -> www.B.net/404.html

Желаемая ситуация (один-к-одному):

www.A.net/Page1.html -> www.A.net/404.html -> www.B.net/Page1.html
www.A.net/Page2.html -> www.A.net/404.html -> www.B.net/Page2.html

Обратите внимание , что я размещаю статические веб-сайты в Github / Gitlab.

Особый контекст : я хочу перенаправить мои страницы Gitlab и Bitbucket на мои страницы Github.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Вы можете получить доступ к рефереру через Javascript, проанализировать его и соответственно перенаправить.

* 1003 Е.Г. *

<script>
     let referrer = new URL(document.referrer);
     let hostRedirection = 'http://exampleB.com';

     document.location.href = hostRedirection + referrer.pathname;
</script>

Поскольку я использую URL , он не совместим с IE (но совместим с Edge), хотя он очень краткий и читаемый. Делать это с регулярным выражением не должно быть слишком сложно .

Добавление некоторой обработки ошибок в случае, если реферер не был установлен, настоятельно рекомендуется.

0 голосов
/ 04 июля 2018

Вы не можете сделать это только на уровне Javascript. Это связано с тем, что Javascripts, работающий на стороне клиента, не имеет доступа к истории браузера по соображениям безопасности.

Если вы находитесь на стороне сервера, вы можете использовать HTTP-заголовок Referer: в коде, генерирующем www.A.net/404.html, для генерации такой страницы 404, которая перенаправляет вас к желаемому месту назначения.

Обратите внимание, что такие вещи считаются явно худшим решением, если вы делаете это на стороне клиента. Они медленнее, они делают ваш сайт зависимым от Javascript, также сканеры не смогут следить за ним (если они недостаточно умны, чтобы выполнять javascript-коды сайта) и т. Д.

Лучше, если вы выучите какой-нибудь серверный язык / фреймворк и будете делать с ним; хотя чистые клиентские решения довольно распространены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...