为什么需要301重定向?网址更改权重不减?下载
在网络世界中,301 重定向是一个非常重要的概念,它对于网站的流量和搜索引擎优化起着关键作用。
你是否曾经在浏览网页时遇到过链接跳转的情况,或者在搜索引擎中输入一个网址却被自动重定向到另一个页面?这背后可能就是301重定向在起作用。301 重定向是一种将网址永久重定向到其他网址的方法。
在本文中,将解释技术背景并向您展示如何使用 htaccess 设置 301 重定向。
为什么需要 301 重定向?
301 重定向是最著名的重定向类型。数字 301 基于 HTTP 状态代码。状态码 404 表明无法找到所请求的资源,而 300 代码则代表重定向。通常,您使用 301 重定向来避免 404 错误。
以下是最重要的 HTTP 状态代码的概述:
HTTP 状态代码 | 描述 |
---|---|
200 OK | 服务器在请求的地址找到资源并可以将其传回。 |
301 Moved permanently | 所请求地址处的资源已被永久移动,并且知识兔服务器已从那里返回该资源。旧地址不再有效。 |
302 Found | 所请求地址处的资源已暂时移动,服务器已从那里返回该资源。旧地址将在未来某个时候再次有效。 |
303 See other | 然而,与 302 类似,知识兔打开临时地址时仅允许 GET 请求。 |
307 Temporary redirect | 与 302 类似,但与 303 不同的是,客户端在打开临时地址时可能会改变 HTTP 方法(GET、POST、PUT 等)。 |
404 Not found | 服务器无法从请求的地址找到任何资源。 |
为了在网络上查找内容或资源,需要使用网址。发生内容迁移时,知识兔可以找到内容的地址会发生变化。然而,内容本身却并非如此。当从 HTTP 切换到 HTTPS 或将站点从一个域移动到另一个域时,通常会出现这种情况。在优化搜索引擎的链接结构时,地址也可能会发生变化。在所有这些情况下,您不希望尝试使用旧地址访问内容的用户登陆到空白页面。
如果知识兔服务器无法在给定地址找到资源,它将返回 HTTP 404 Not Found 错误。此类错误往往会惹恼用户,因为他们无法访问他们想要访问的网页。如果知识兔该地址是由网络爬虫而不是人打开的,则 404 错误可能会导致该资源取消索引。网站运营商会尽力避免这两种情况。
除了更改网页内容的地址之外,301 重定向也是搜索引擎优化 (SEO) 和在线营销的重要组成部分。301 重定向用于创建搜索友好的 URL 和规范 URL。URL 缩短器经常用于社交媒体,也源自 301 重定向。
为什么 301 重定向对于 SEO 如此重要? 与 302、303 和 307 重定向不同,301 重定向会将原始地址的“链接汁”转移到新地址。如果知识兔搜索引擎已将此内容编入索引并对其进行正面评价,则该地址在替换为 301 重定向时不会失去其评级。301 重定向还使复杂的 SEO 策略(例如多域策略)成为可能。
301 重定向如何工作?
301 重定向在 Web 服务器和客户端之间的交换期间使用。服务器告诉客户端所请求的资源在给定的网址 (URL) 上不再可用,并为其分享新的有效地址。人的浏览器和搜索引擎机器人都可以被视为客户端。
- 客户端尝试访问 URL 处的资源。
- 服务器以状态代码“301 永久移动”进行响应,并给出新的 URL 作为 HTTP 位置标头。
- 客户端将新 URL 保存在其缓存中,这意味着任何进一步尝试访问旧 URL 的行为都会自动定向到新 URL。
- 然后知识兔客户端尝试从新 URL 访问资源。
知识兔已经了解了 301 重定向如何在客户端和服务器之间工作。但是如何在服务器上设置 301 重定向呢? 有不同的方法可以做到这一点,但最常见的方法之一是在 Apache Web 服务器的 htaccess 文件中设置重定向。为了使其工作,需要打开相应的 Apache 模块:
指令 | Apache 模块 | 描述* |
---|---|---|
Redirect | mod_alias | 简单重定向 |
Rewrite | mod_rewrite | 复杂重定向 |
让知识兔看一下如何在 htaccess 文件中设置简单的 301 重定向。为此,请使用 mod_alias 模块中的重定向指令。当您想要将服务器上的 URL 重定向到另一个 URL 时,这些方法非常适合。模板如下:
Redirect 301 "/source_path" "target_URL"
接下来,将服务器上的 URL 重定向到另一个内部 URL。开头的正斜杠表示 URL 路径的开始,即域名后面的部分:
Redirect 301 "/old.html" "/new.html"
要将其发送到外部 URL,请将外部 URL 添加为目标:
Redirect 301 "/old.html" "http://example.com/new.html"
使用重定向指令,您还可以为 htaccess 文件中的整个索引定义 301 重定向。在此示例中,知识兔将使用“cn”路径组件将所有 URL 重定向到子域。
Redirect 301 "/cn/" "http://de.example.com/"
同样,知识兔可以将一个域上的所有 URL 重定向到一个新域:
Redirect 301 "/" "http://other.example.com/"
如果知识兔要重定向具有相似模式的各个地址,知识兔可以使用 RedirectMatch 指令。这样您就不必单独记录重定向。该指令使用标准表达式来识别模式并从中提取。
RedirectMatch 301 regex URL
在这里,知识兔将向您展示一个 RedirectMatch 条目,该条目从 GET 参数中提取文章的类别和 ID,然后知识兔将它们重定向到路径。
RedirectMatch 301 “/article.php?cat=(.*)&id=(.*)” “/articles/$1/$2/”
假设知识兔的域名是 example.com。
URL http://example.com/article.php?cat=web&id=42 将被重定向到 http://example.com/articles//web/42/。
要为高级重定向创建 301 重定向,您可以使用 Apache 重写模块 mod_rewrite 中的重写指令。这允许您定义和请求重定向条件、设置和读取环境变量以及使用常规术语定义重定向规则。
使用 mod_rewrite,知识兔可以链接重定向规则。该模块将分享类似于迷你编程语言的东西来改革 URL 并执行重定向。但是,这是您必须小心的事情,因为如果知识兔使用不当,可能会导致无限循环。
重写指令以目标“RewriteEngine on”开始,后跟可选的 RewriteCond 条件。之后是一个或多个 RewriteRule 重定向规则。可以使用标志来更改重写条件和规则的工作方式,这本质上是不同的选项。要设置 301 重定向,规则必须包含标志 L,R=301:
RewriteEngine onRewriteCond TestString CondPattern [flags]RewriteRule URL_path Substitution [L,R=301]
在重定向规则和条件中,您可以从 %{HTTP_HOST}、%{REQUEST_URI} 等形式访问多个标头和服务器变量。这些变量可以由运算符链接并作为函数进行编辑。这意味着几乎所有所需的重定向都可以执行,即使知识兔语法并不完全直观。
让知识兔看一下使用 mod_rewrite 进行 301 重定向的示例。知识兔希望强制使用规范 URL,知识兔以避免知识兔网站上出现重复内容。这意味着所有 URL 都以 HTTPS 和 www. 开头,无论用户如何打开内容。
知识兔可以定义两个重定向条件,知识兔可以使用 OR 标志链接它们。第一个条件检查 HTTPS 是否关闭,第二个条件检查域是否缺少前缀“www”。使用 NC 标志,知识兔可以关闭大小写字母之间的差异。如果知识兔其中一个条件成立,知识兔会将其重定向到 https-www。URL 的版本。为此,知识兔使用所有 URL 都访问的通用短语 (.*)。要在域后面输入它,请使用 $1:
RewriteEngine onRewriteCond %{HTTPS} off [OR]RewriteCond %{HTTP_HOST} ^example\.com [NC]RewriteRule (.*) https://www.example.com/$1 [L,R=301]
使用 301 重定向有哪些问题和风险?
301 重定向是 Web 开发和 SEO 的常用工具。但是,您必须小心。如果知识兔重定向使用不当,可能会导致很多问题,知识兔包括服务器崩溃和搜索引擎排名下降。
htaccess 文件在索引级别配置 Apache Web 服务器。即使知识兔对 htaccess 文件进行最小的错误更改也很容易导致网站离线。这会导致令人担忧的服务器错误 500 或 WordPress 上的白屏死机。
为了避免这种情况,最好在编辑 htaccess 文件时复制它。这可以通过命令栏轻松完成。只需切换到该站点的公共 Web 索引并使用 cp 命令即可:
cp -a .htaccess _htaccess
如果知识兔 htaccess 文件中的任何更改导致错误,知识兔可以将其恢复到原始版本:
cp -a _htaccess .htaccess
重定向很有用,但可能会耗费整个请求-响应周期。如果知识兔使用链式重定向,用户必须等待,这可能会导致跳出率增加。如果知识兔网站连续执行多个重定向,搜索引擎也会对网站进行负面评价。根据经验,不应设置超过三个重定向。
可能发生的最糟糕的事情是重定向循环,其中两个地址不断地重定向到彼此。这对用户来说显示为浏览器错误 ERR_TOO_MANY_REDIRECTS,这意味着他们想要访问的资源不再可用。您应该尝试使用 cURL 测试重定向,知识兔以确保获得所需的结果。
不正确地使用 301 重定向可能会成为日后许多令人头疼的问题的根源。与临时 302、303 和 307 重定向不同,301 重定向告诉客户端将新 URL 保存在其缓存中。如果知识兔您想返回原始 URL,则不会通知客户端。相反,它将继续尝试连接到新的 URL。为了解决这个问题,您可以使用临时重定向或将缓存控制值设置为适当的值。
让知识兔将缓存控制标头设置为一小时。这确保了以后对重定向目标的更改将被所有客户端接收。
ExpiresActive onExpiresDefault "access plus 1 hour"Redirect 301 / https://www.example.com/
如果知识兔您使用带有重写指令的高级重定向,则有一个设置缓存控制标头的技巧。知识兔可以将环境变量 limitcache 定义为 301 重定向规则的一部分。最后,知识兔可以使用环境变量作为条件来设置标头。这确保了重定向时始终使用正确的标头:
RewriteRule ^.* http://www.example.com/ [L,R=301,E=limitcache:1]Header always set Cache-Control "max-age=3600" env=limitcache
提示
遵循 301 重定向,现在您的浏览器拒绝访问原始地址? 只需将带有 ?foo=bar 的查询字符串附加到旧地址并强制浏览器加载 URL。
301 重定向总结
学习了什么是 301 重定向后,知识兔可以得出以下总结:
- 301 重定向是一种 HTTP 状态码,知识兔用于指示资源已经永久地移动到了新的位置。
- 当一个页面的 URL 发生变化或网站进行重构时,知识兔可以使用 301 重定向来将旧的 URL 指向新的 URL,知识兔以确保用户和搜索引擎能够顺利访问到相关内容。
- 301 重定向对用户体验非常重要,知识兔可以帮助他们在访问旧的 URL 时自动跳转到新的地址,减少 404 页面的出现。
- 对于搜索引擎优化(SEO)而言,301 重定向可以帮助维持网站在搜索结果中的可见性和排名,因为它将旧 URL 的权重和排名传递给新的地址。
- 使用301重定向需要确保设置正确的重定向规则,知识兔以避免错误的重定向或者出现无限循环的情况。
- 在网站开发和维护过程中,理解和正确应用 301 重定向是非常重要的技巧之一,能够提升网站的用户体验和搜索引擎可识别性。
通过学习 301 重定向,知识兔能够更好地管理网站的 URL 结构变化,并且知识兔为用户和搜索引擎分享良好的访问体验。同时,合理应用 301 重定向还有助于保持网站的 SEO 价值和排名。
下载仅供下载体验和测试学习,不得商用和正当使用。