如何 301 将一个静态 url 重定向到另一个静态 url?

Posted

技术标签:

【中文标题】如何 301 将一个静态 url 重定向到另一个静态 url?【英文标题】:How to 301 redirect a static url to another static url? 【发布时间】:2020-05-08 12:16:02 【问题描述】:

我的网站是 html/CSS/JS 网站,没有位于 MS Azure 上的服务器(静态网站)。 我最近更改了 2 个这样的 html 文件:

www.mydomain.com/oldfile1.html

www.mydomain.com/oldfile2.html

www.mydomain.com/newfile1.html

www.mydomain.com/newfile2.html

考虑到网站是静态的,.htaccess 不起作用,并且似乎在 html 文件中使用元标记不被视为 301 永久重定向,我如何为 SEO 重定向旧网址?!

【问题讨论】:

【参考方案1】:

301 重定向是服务器端指令。

在文件到达浏览器之前,浏览器无法读取您放在客户端文件 (<meta> / javascript) 中的任何内容。

此时执行服务器端指令为时已晚

您现在将浏览器指向您试图将其指向远离的目的地。

【讨论】:

我该怎么办? 由于.htaccess 不适合您,您有两种选择:a) 通过 php 引入服务器端重定向(可以是 301);或 b) 通过<meta http-equiv> 或 javascript(不能是 301)添加客户端重定向。【参考方案2】:

可能不是最佳答案,但您可以更改旧文件的 html 以重定向到新文件。

所以是这样的:

<html>
  <head>
    <!--Tells search engines to not index this page-->
    <meta name="robots" content="noindex">
    <!--Redirect to new resource-->
    <meta http-equiv="Refresh" content="0; url=www.mydomain.com/newfile1.html">
  </head>
  <body>
    <!--In case both JavaScript and the meta tag fail-->
    <p>If you aren't automatically redirected please follow<a href="www.mydomain.com/newfile1.html">this link</a>.</p>
    <script>
       //JavaScript fallback if browser does not support/allow http-equiv="Refresh"
       window.location = 'www.mydomain.com/newfile1.html'
    </script>
  </body>
</html>

【讨论】:

注意:&lt;meta&gt; 标签在 HTML 中不使用也不需要结束斜杠,而且从来没有。 正确,但归结为个人喜好。 不是。没有 HTML 规范显示对此的任何要求。事实上,标准明确规定斜杠没有任何意义,它什么也不做,并指示浏览器忽略它。 OP: "[...] 在 html 文件中使用 meta 标签不被视为 301 永久重定向" 因为他的原因是为了SEO,他可以添加&lt;meta name="robots" content="noindex"&gt;标签,这会导致most搜索引擎不索引页面,就像most 搜索引擎不会索引 301 个页面。

以上是关于如何 301 将一个静态 url 重定向到另一个静态 url?的主要内容,如果未能解决你的问题,请参考以下文章

IIS7 或 .Net 301 从一个域重定向到另一个域

如何将网站 301 永久重定向到另一个网站和永久链接的子类别(使用 .htaccess)

使用查询参数和 URL 中的 ~ 进行 301 重定向

从一个静态 URL 重定向或重写到另一个静态 URL

301 将国家域名的***域名重定向到另一个域名

301 使用 web.config 将一个域重定向到另一个域