301 永久重定向是一种 HTTP 状态代码,它指示搜索引擎和浏览器该页面已永久移动到新地址。它用于将访问者指向网站的新位置或合并两个网站。
何使用301 重定向
301 重定向在以下情况下使用:网站已移动到新域名或目录:例如,如果网站从 example.com 迁移到 example.net,则旧域名上所有页面的 URL 应使用 301 重定向指向新域名。网站已合并:例如,如果 websiteA.com 和 websiteB.com 被合并为一个网站,则 websiteA.com 上的所有页面的 URL 应使用 301 重定向指向 websiteB.com。网站已重新设计或更新:例如,如果网站的外观或结构发生重大变化,旧页面的 URL 应使用 301 重定向指向新页面。
301 重定向的好处
301 重定向具有一些好处,包括:SEO 友好:搜索引擎将网站的新位置视为与旧位置相同的页面,从而保持其排名和反向链接。用户体验:访问者将被自动重定向到新页面,从而提供无缝的用户体验。链接完整性:301 重定向使指向旧页面的链接保持完整,从而避免链接失效。
如何设置 301 重定向
There are several ways to set up a 301 redirect, including:.htaccess 文件:在 .htaccess 文件中添加以下代码:Redirect 301 /old-page.html /new-page.htmlWeb 服务器配置:在 Web 服务器配置文件中添加以下代码(例如,Apache 的 httpd.conf):Redirect /old-page.html /new-page.html重定向插件:使用 WordPress 等内容管理系统中的插件来设置重定向。
需要注意的事项
在使用 301 重定向时,需要注意以下事项:重定向链:避免创建重定向链,即多个重定向指向最终目标页面。这可能会导致性能问题和 SEO 问题。自引用重定向:避免将页面重定向到自身,因为这会导致无限循环。监管:某些监管机构可能会对 301 重定向的使用施加限制,例如医疗和金融行业。301 永久重定向是一种有用的技术,用于将访问者从旧页面永久重定向到新页面。通过正确使用 301 重定向,您可以维护 SEO 排名,提供无缝的用户体验并保持链接完整性。
301永久重定向是什么?
页面永久性移走(301重定向)是一种非常重要的“自动转向”技术。
网址重定向最为可行的一种办法。
当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。
定向编辑301永久重定向:这是SEO中的一个基础名词,在URL规范化中会用到,也许大家都知道这个名词,但是由于应用的不是非常频繁,导致很多专业做SEO的朋友都不是很熟悉301永久重定向的具体操作方法,今天我就讲解下301永久重定向的理论,以及实际的操作方法作用编辑301永久重定向是所有的重定向方法中唯一符合搜索引擎规则的重定向方法,其他的重定向还包括302暂时重定向和JS跳转等,这些方式都容易导致URL不规范问题的产生。
所以说如果你有多个域名都希望可以让他们访问同一个网站,那就只能将其中一个做为主域名,剩下的其他域名做301永久重定向到这个主域名,只有这样才可以完美的让多个域名都访问一个站点,不会产生重复收录,导致网站被惩罚的现象执行方法编辑301永久重定向有几种不同的做法,在windows主机上和Unix/Linux主机是不同的。
在windows主机上设置的方法可以在IIS服务器上设置也可以在代码中设置。
1、在IIS服务器上设置301的方法这种设置方法需要有一个先天条件,那就是你有服务器的管理权,你可以直接操作IIS服务器,并且可以随意开通新的虚拟主机,否则你只能用修改网站代码的方法。
首先开通一个新的虚拟主机,将你需要做301永久重定向的域名正常与该空间绑定,这个绑定的方法你可以咨询服务器托管商。
然后打开“控制面板”→找到“管理工具”→打开“Internet 信息服务”。
打开后,可以在管理器左侧树形菜单中找到你的网站,然后右击选择“属性”,打开网站的属性管理面板(如下图),并且选择到“主目录”选项卡,选择“重定向到URL”,然后在地址框中输入“主域名”,然后将选项卡中的“资源的永久重定向”选择上,点击确定即可设置完毕。
2、在网站代码中设置301的方法只需要将以下代码加在网页的开头即可,不过只能用在ASP和PHP文件中,HTML无法通过代码设置301。
ASP代码: !<%@ Language=VBScript %><%=301 Moved Permanently Location ,代码:<?Header( “HTTP/1.1 301 Moved Permanently” );Header( “Location:” );?>注:将我的网址替换成你自己的定向后的目标网址即可,所有的标点必须用英文半角。
3、在博客中设置301的方法这边以Z-Blog为例详细介绍一下:1.复制如下代码,将代码中“###”改成你自己的网址即可。
if (SERVER_NAME)=### =301 Moved Location,if2.进入Z-Blog后台,打开“文件管理”界面。
3.找到并打开网站根目录下的 文件。
4.将以上代码加进 在下图中红框所示位置。
301永久重定向5.最后确定无误点击 提交 保存。
在Unix/Linux主机上设置的方法可以用文件1. Apache模块 mod_alias的 Redirect 和 RedirectMatch命令上面提到2个命令使用方法相似。
而区别就是后者RedirectMatch基于正则表达式匹配对当前的URL发送一个外部重定向语法为:Redirect [status] URL-path URLRedirectMatch [status] regex URLstatus参数可以使用以下HTTP状态码:permanent返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
temp返回一个临时性重定向状态码(302),这是默认值。
seeother返回一个“参见”状态码(303),表示此资源已经被替代。
gone返回一个“已废弃”状态码(410),表示此资源已经被永久性地删除了。
如果指定了这个状态码,则URL参数将被忽略。
举例:APACHERedirect 301 /old/ /one301 (.*)$$2.使用mod_rewrite重写URL方式APACHEOptions +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^#### ^(.*)$$1 [R=permanent,L]在这里判断当前服务器变量HTTP_HOST是否等于###,为真就进行重写,按照R=permanent进行永久重定向,L表示并立即停止重写操作,并不再应用其他重写规则下面是最终实现的文件,同时也并入wordpress重写规则。
APACHE# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine On#RedirectOptions +FollowSymLinksRewriteCond %{HTTP_HOST} ^###$RewriteCond %{HTTP_HOST} !^$RewriteRule ^(.*)$$1 [R=301,L]#Rewrite(blog)RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^blog/.* /blog/ [L]RewriteRule . -</IfModule># END WordPress运作流程编辑让我们先来了解一下用户,搜索引擎和网站一开始的交互流程。
当用户或搜索引擎向一个网站服务器发出网页浏览请求时,该服务器将:1.通过域名服务器(DNS)将域名转换为网站的IP地址,然后返回给客户2.打开一个该IP套接口连接3.记下通过该套接口的一个HTTP数据流4.从WEB服务器接收一个响应请求的HTTP数据流,该数据流包含状态码,状态码的值由HTTP协议所决定。
这里所说的“HTTP数据流”信息也叫“头信息(Header)”。
头信息中包括了日期,服务器类型,通常还会有一条“200 OK”信息。
如果一切良好,那么网络服务器就会将“200 OK”信息以及请求页面发送出去。
如果网站在这时候已经建立了重定向,那么服务器就会在头信息中包含一个“302 Moved Temporarily”或“301 Moved Permanent”之类的响应信息。
搜索引擎会根据服务器头信息中的内容作出决定。
windows网站301重定向怎么做
301重定向,简单来说,就是用户向网站服务器提出访问请求时,该网址被永久性转向另一个地址。
这是一种实现起来并不难、又对搜索引擎友好的SEO手段。
我们先来介绍一下有必要使用301重定向的几种情况:1、网站更换域名,将老域名重定向到新域名上;2、网站有多个域名,可以通过重定向让访问这些域名的用户自动跳转到主站点3、将不带www的域名重定向到带www的域名,这样输入不带www的域名就会自动转向带www的;4、网站调整,改变了网站的目录结构,网页被移到一个新地址;5、网页扩展名改变,如因应用需要把改成或;6、将旧的、动态URL转到新的静态URL;7、网站改版,新版内容和旧版内容同时存在一段时间,可以将旧版内容指向新版对应内容;如果您的网站存在以上这些情况,建议您可以做一下301重定向。
301重定向不仅可以集中域名权重(情况2、3),还可以使新域名继承老域名的权重(情况1)。
此外,如果在情况4、5之下不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,您的网站将白白丧失访问流量。
所以,做好301重定向,能够尽可能的降低网站因改版、更换域名等情况带来的流量损失,提高用户体验度,同时有利于网站优化。
Windows主机IIS服务器实现301重定向:1、打开internet信息服务管理器,在欲重定向的网页或目录上按右键,选择“重定向到URL”;2、在“重定向到”输入框中输入要跳转到的目标网页的URL地址;3、选中“资源的永久重定向” ;4、最后点击“应用”。
Windows主机上以主机为例:ASP 下的301重定向:现在网站根目录下新建一个首页文件,粘贴以下代码,并将URL替换成您的目标ULR。
http重定向之301、302和307
在MDN中HTTP的重定向一文中,介绍了3种重定向。
其中第一和第三种比较常见,大部分前端开发者应该写过第三种
本文所介绍的301、302和307属于http的重定向。
http 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行重定向操作(只是告知具体的状态码3xx,具体由浏览器执行)。
顾名思义,永久重定向说明当前的URL不再使用了,永远都重定向到新的URL,以状态码的形式告知浏览器。所以搜索引擎以及其他爬虫识别到该状态码时,会更新旧 URL 的资源。在http状态码中,以301代表永久重定向(还有308但我还没见过)。
应用场景包括:域名重定向,http到https等。
搜索引擎会更新301的资源地址。如下,ahrefs博客旧地址是 ,搜索引擎抓取到301状态码后,会更新该资源地址为 /blog 。搜索ahrefs博客可以看到用的是新的地址:
有时候请求的资源无法从其标准地址访问,但是却可以从另外的地方访问。在这种情况下可以使用临时重定向将请求转移到另一个地方。http状态码302、307(还有303但我没见过)都属于临时重定向。
307与302的区别在于,收到307响应码后,客户端应保持请求方法不变向新的地址发出请求。
应用场景:http重定向到https、未登录的用户重定向到登录页、404后跳转首页等。 举例,用访问网络。
实际上,当我再次用浏览器打开,状态码就变成307了并且含义跟rfc规范中的Temporary Redirect不一致。
仔细想来,目前为止我都没见过307 Temporary Redirect ,只见过307 Internal Redirect。
注意 Non-Authoritative-Reason: HSTS响应头。这是HTTP 的严格传输安全 (HSTS)。
这是一个虚假的响应,不是由服务器生成的, 由 Chrome 创建的虚拟 307 响应,并重定向到地址的 https 版本。因为chrome维护了一份HSTS站点列表,知道该域名必须要https方式请求,于是截获http请求后,做出 307响应。
那浏览器是如何知道这个 这个域名需要使用严格传输安全 (HSTS) 呢?
答案是第一次重定向到(或者直接访问),响应头中有一个特殊的头:
Strict-Transport-Security: max-age=
告诉浏览器在s内直接去使用https访问。
有趣的事,我在火狐上用同样的例子baidu测试,第一次302重定向之后,第二次再用访问, 火狐会直接访问。
这也可以看到 Strict-Transport-Security 响应头的优点:
此外, HTTP的 重定向 一文中还列出了 特殊重定向,把300和304都作为特殊重定向。 其中304 是 HTTP 缓存中的一个重要内容,表示资源未修改,相当于将资源重定向到本地缓存。
其实从用户的角度来看,不管是永久还是临时重定向都会发生跳转,浏览器中URL 变成了新的 URL,页面刷新。