繁体   English   中英

重定向到不同域中的相同路径

[英]Redirect to the same path in a different domain

如何通过https://将某个页面Page.html的所有https://www.A.net/Page.html请求重定向到另一个域https://www.B.net/Page.html上的相应页面/www.A.net/404.html Github / Gitlab页面将所有未找到页面的错误重定向到后者。 是否有可能以某种方式检索原始请求的页面并在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页面。

您可以通过Javascript访问引荐来源网址,然后在其中进行解析并相应地重定向。

例如

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

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

由于我使用的是URL ,尽管它非常简洁易读,但它与IE不兼容(但与Edge兼容)。 用正则表达式进行操作应该不难

强烈建议在未设置引荐来源网址的情况下添加一些错误处理。

您不能仅在Javascript级别上执行此操作。 这是因为出于安全原因,在客户端运行的Javascript无法访问浏览器历史记录。

如果您在服务器端,则可以在生成www.A.net/404.html的代码上使用Referer: HTTP-Header来生成这样的404页面,该页面重定向到所需的目标。

请注意,如果您在客户端执行此类操作,则显然是较差的解决方案。 它们速度较慢,正在使您的网站依赖Java脚本,而且爬网程序将无法跟踪它(如果它们不够聪明,无法执行该站点的javascript),依此类推。

如果您学习并使用一些服务器端编程语言/框架,那就更好了; 尽管纯客户端解决方案也很常见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM