重定向在标头中的 javascript 中找不到的特定 URL



>我移动了我的网站,我有一个二维码(公开打印,不容易替换(,指向我的旧网站上的一个特定文件,该文件现已移动。目前,该 URL 仅指向我的新网站上的"未找到"页面。我尝试在标头中使用javascript来捕获URL并将其转发到正确的URL,如下所示:

<script type="text/javascript">
if(window.location.href === "https://www.website.com/multimedia/hoerproben/1.mp3")
{
window.location.href = "https://www.webseite.com/app/download/10079133850/1.mp3";
}
</script>

但它不起作用。任何暗示我做错了什么?

当您打开 URL 时,浏览器会向您的服务器发出该特定资源(在您的示例中为 mp3 文件(的 HTTP 请求。 JavaScript 根本不参与(实际上,有所谓的"服务工作者",但它们不是你要找的,它们的目的是做缓存,而不是重定向(。浏览器不知道你的JavaScript代码存在,也不会执行它。

你应该做的是从服务器路由重定向,所以当浏览器从/oldlocation/file.mp3 请求时,服务器会用/newlocation/file 回答.mp3

根据您的服务器,这可能以不同的方式进行。如果您无法控制服务器的工作方式,那么您提出的问题根本不可能。

除非您将该代码放在提供的"未找到"页面中,否则它不起作用。如果您的 URL 指向 HTML 文件,您可以只放置一个来执行重定向。对于媒体文件,您必须将服务器配置为提供 HTML 文件。不用担心扩展名,它是Content-Type标头,决定了所提供文件的类型。但是,这样做不是好的做法,因为您的服务器仍将返回 200 响应代码。

正如101arrowz 在评论中指出的那样返回301 Moved Permanently是一种很好的做法。如何做到这一点取决于您使用的服务器。

以下是使用 express.js 实现此操作的方法:

app.get('/multimedia/hoerproben/1.mp3', function(req, res) {
res.redirect('/app/download/10079133850/1.mp3');
});

最新更新