URL HTTP 重定向

URL HTTP 重定向 是从一个 URL 自动跳转到另一个 URL 的操作。

URL 重定向

URL 页面重定向 是从一个 URL 自动跳转到另一个 URL 的操作。

进行这种重定向的原因如下:

  1. 从旧的、过时的 URL 重定向到新的、更新的 URL。
  2. 从旧的、过时的域名重定向到新的域名。
  3. 从非 www 域名重定向到 www 域名。
  4. 从短 URL 名称重定向到长 URL 名称 - URL 缩短服务。
  5. URL 缩短服务允许用户输入短 URL 并被重定向到包含真实页面内容的长 URL。

用户可能通过旧的外部链接或书签访问到旧的 URL。

由网站管理员通过添加脚本来实现。

服务器端重定向

服务器端重定向在服务器上完成,通过配置 Apache / IIS 服务器软件或使用 PHP / ASP / ASP.NET 脚本实现。

这是重定向 URL 的首选方法,因为您可以返回 HTTP 301 永久移动状态码。

搜索引擎使用 301 状态码将旧 URL 的页面权重转移到新 URL。

客户端重定向

客户端重定向在用户的网页浏览器中完成,通过使用 HTML meta refresh 标签或 Javascript 代码实现。

客户端重定向不太受推荐,因为它不返回 HTTP 301 状态码。

在哪里放置重定向代码

域名 托管
服务器
重定向代码
放置位置
未更改 未更改 同一服务器上的旧页面
未更改 已更改 新服务器上的旧页面
已更改 未更改 同一服务器上的旧页面
已更改 已更改 旧服务器上的旧页面

* 仅适用于 .htaccess 重定向:将重定向代码添加到 httpd.conf 文件或 .htaccess 文件中。

HTTP 状态码

状态码 状态码名称 描述
200 OK 成功的 HTTP 请求
300 Multiple Choices  
301 Moved Permanently 永久 URL 重定向
302 Found 临时 URL 重定向
303 See Other  
304 Not Modified  
305 Use Proxy  
307 Temporary Redirect  
404 Not Found URL 未找到

HTTP 301 重定向

HTTP 301 永久移动 状态码表示永久 URL 重定向。

301 重定向是重定向 URL 的首选方法,因为它告知搜索引擎该 URL 已永久移动,搜索引擎应在搜索结果中显示新 URL 页面而非旧 URL 页面,并将旧 URL 页面的页面权重转移给新 URL 页面。

301 重定向可以在不同域名之间进行,也可以在同一个域名内进行。

Google 推荐 使用 301 重定向。

重定向选项

重定向脚本 重定向端 旧页面文件类型 重定向 URL 或域名 旧 URL 服务器类型 301 重定向支持
PHP 服务器端 .php URL Apache / Linux
ASP 服务器端 .asp URL IIS / Windows
ASP.NET 服务器端 .aspx URL IIS / Windows
.htaccess 服务器端 全部 URL / 域名 Apache / Linux
IIS 服务器端 全部 URL / 域名 IIS / Windows
HTML canonical link 标签 客户端 .html URL 全部
HTML meta refresh 客户端 .html URL 全部
HTML frame 客户端 .html URL 全部
Javascript 客户端 .html URL 全部
jQuery 客户端 .html URL 全部

重定向脚本 - 用于重定向的脚本语言。

重定向端 - 重定向发生的位置 - 服务器端客户端

旧页面文件类型 - 可以包含重定向代码脚本语言的旧 URL 页面的类型。

重定向 URL 或域名 - 是否支持单个网页的 URL 重定向或整个网站的 域名 重定向。

典型旧 URL 服务器类型 - 服务器的典型软件和操作系统。

301 重定向支持 - 指示是否可以返回永久性 301 重定向状态响应。

PHP 重定向

将 old-page.php 的代码替换为重定向到 new-page.php 的代码。

old_page.php:

<?php
// PHP 永久 URL 重定向
header("Location: http://www.mydomain.com/new-page.php", true, 301);
exit();
?>

旧页面必须具有 .php 文件扩展名。

新页面可以是任何扩展名。

参见:PHP 重定向

Apache .htaccess 重定向

.htaccess 文件是 Apache 服务器的本地配置文件。

如果您有权更改 httpd.conf 文件,最好将 Redirect 指令添加到 httpd.conf 中,而不是 .htaccess 文件中。

单个 URL 重定向

old-page.html 永久重定向到 new-page.html

.htaccess:

Redirect 301 /old-page.html http://www.mydomain.com/new-page.html

整个域名重定向

将所有域名页面永久重定向到 newdomain.com

 .htaccess 文件应位于旧网站的根目录。

.htaccess:

Redirect 301 / http://www.newdomain.com/

参见:.htaccess 重定向

ASP 重定向

old-page.asp:

<%@ Language="VBScript" %>
<%
' ASP 永久 URL 重定向
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.mydomain.com/new-page.html"
Response.End
%>

ASP.NET 重定向

old-page.aspx:

<script language="C#" runat="server">
// ASP.net 永久 URL 重定向
private void Page_Load(object sender, EventArgs e)
{
   Response.Status = "301 Moved Permanently";
   Response.AddHeader("Location","http://www.mydomain.com/new-page.html");
   Response.End();
}
</script>

HTML meta refresh 重定向

HTML meta refresh 标签重定向不返回 301 永久重定向状态码,但被 Google 视为 301 重定向。

将旧页面替换为重定向代码,并指定您想要重定向到的页面的 URL。

old-page.html:

<!-- HTML meta refresh URL 重定向 -->
<html>
<head>
   <meta http-equiv="refresh"
   content="0; url=http://www.mydomain.com/new-page.html">
</head>
<body>
   <p>该页面已移动到:
   <a href="http://www.mydomain.com/new-page.html">此页面</a></p>
</body>
</html>

参见:HTML 重定向

Javascript 重定向

Javascript 重定向不返回 301 永久重定向状态码。

将旧页面替换为重定向代码,并指定您想要重定向到的页面的 URL。

old-page.html:

<html>
<body>
<script type="text/javascript">
    // Javascript URL 重定向
    window.location.replace("http://www.mydomain.com/new-page.html");
</script>
</body>
</html>

参见:Javascript 重定向

jQuery 重定向

jQuery 重定向实际上是另一种类型的 Javascript 重定向。

jQuery 重定向不返回 301 永久重定向状态码。

将旧页面替换为重定向代码,并指定您想要重定向到的页面的 URL。

old-page.html:

<!DOCTYPE html>
<html>
<body>
<script src="https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
   // jQuery URL 重定向
   $(document).ready( function() {
      url = "http://www.mydomain.com/new-page.html";
      $( location ).attr("href", url);
  });
</script>
</body>
</html>

参见:jQuery 重定向

HTML canonical link 标签重定向

Canonical link 不会重定向到首选 URL,但对于大部分流量来自搜索引擎的网站,它可以作为 URL 重定向的替代方案。

当存在多个内容相似的页面,并且您想告诉搜索引擎您希望在搜索结果中使用哪个页面时,可以使用 HTML canonical link 标签。

Canonical link 标签可以链接到同一域名,也可以跨域链接。

将 canonical link 标签添加到旧页面,以链接到新页面。

将 canonical link 标签添加到您不希望获得搜索引擎流量的页面,以链接到首选页面。

Canonical link 标签应添加在 <head> 部分。

old-page.html:

<link rel="canonical" href="http://www.mydomain.com/new-page.html">

参见:Canonical URL 链接

HTML frame 重定向

在 frame 重定向中,new-page.html 文件通过 HTML 框架显示。

这不是真正的 URL 重定向。

Frame 重定向对搜索引擎不友好,不推荐使用。

old-page.html:

<!-- HTML frame 重定向 -->
<html>
<head>
    <title>新页面标题</title>
</head>
<frameset cols="100%">
    <frame src="http://www.mydomain.com/new-page.html">
    <noframes>
     <a href="http://www.mydomain.com/new-page.html">链接到新页面</a>
    </noframes>
</frameset>
</html>


301 重定向生成器 ►



另请参阅

可否帮我们改进此页面

网页开发
站点内容