如何在用户访问网站的查看页面源时进行重定向?

How to redirect users when they access the website's view page source?

我正在使用下面的代码来重定向不是来自 google 的用户。它还可以防止直接访问 link 而无需访问 google。但是为什么当我查看我域的页面源代码 (view-source:https://owndomain.com/NMkrujlS) 时,它没有重定向到 example.com?查看页面源不是直接访问我的域吗?我怎样才能解决这个问题? 谢谢

我的代码:

var ref = document.referrer;
if (ref.match(/^https?:\/\/([^\/]+\.)?google\.com(\/|$)/i)) {
    // do nothing
} else {
   // redirect
   window.location.replace("https://example.com" + window.location.pathname);
}

您在原始问题的评论中链接的示例使用 header-based 重定向,这就是为什么当您将 Chrome 的实例指向 view-source:rshrt.com/getlink/YCy 时,它会将您重定向到目标页面。这符合浏览器处理 header-based 重定向的方式。如果您打开开发人员工具的“网络”选项卡并检查浏览器发送到目标站点的请求,则可以确认这一事实,这些请求显示 rshrt.com 页面重定向并带有 301 Moved Permanently 状态代码(以及相应的Location header,指向目标页面):


在您自己的示例中,您正在使用 JavaScript 执行重定向。当使用 view-source 时,这个 JavaScript 不是浏览器 executed/interpreted。因此,重定向永远不会发生。

如果您希望它的功能更像您作为示例给出的网站,您必须在服务器级别配置这些重定向规则以正确 return 301302 状态代码(以及适当的 Location header),而不是在客户端级别使用 JavaScript。 具体 你将如何完成这完全取决于你的服务器运行的堆栈,并且可以说超出了你提出的问题的当前范围。