如何通过https://www.A.net/Page.html将某个页面Page.html的所有https://www.B.net/Page.html请求重定向到另一个域https://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页面。
答案 0 :(得分:2)
您可以通过Javascript访问引荐来源网址,然后在其中进行解析并相应地重定向。
例如
<script>
let referrer = new URL(document.referrer);
let hostRedirection = 'http://exampleB.com';
document.location.href = hostRedirection + referrer.pathname;
</script>
由于我使用的是URL,尽管它非常简洁易读,但它与IE不兼容(但与Edge兼容)。用regexp shouldn't be too hard做。
强烈建议在未设置引荐来源网址的情况下添加一些错误处理。
答案 1 :(得分:0)
您不能仅在Javascript级别上执行此操作。这是因为出于安全原因,在客户端运行的Javascript无法访问浏览器历史记录。
如果您在服务器端,则可以在生成Referer:
的代码上使用www.A.net/404.html
HTTP标头来生成这样的404页面,该页面将重定向到所需的目的地。
请注意,如果您在客户端执行此类操作,则显然是较差的解决方案。它们速度较慢,它们使您的网站依赖Java脚本,而且爬网程序将无法跟踪它(如果它们不够聪明,无法执行该站点的javascript),等等。
更好地学习服务器端编程语言/框架并加以使用;尽管纯客户端解决方案也很常见。