网站重定向301 302 307等不同重定向怎样做?有什么差别

网站建设
网站会更改结构,删除页面,并且经常从一个域移动到另一个域。为了避免失去排名并帮助搜索引擎了解您所做的更改,正确处理重定向至关重要。
重定向的状态码从第三个数字开始(即3xx)。有100种不同的可能状态代码,但只有少数几种实现用于携带某些信息。
在本指南中,我们将介绍与seo相关的3xx重定向。
301:永久重定向此众所周知的重定向向客户端*指示资源已更改到另一个位置,并且它应将新的url用于以后的请求。当搜索引擎看到301重定向时,它们会将旧页面的排名传递给新页面。
进行更改之前,在决定使用301重定向时需要小心。这是因为如果您以后改变主意并决定删除301重定向,则旧的url可能不再排名。
即使您交换了重定向,也无法帮助您将旧页面恢复到之前的排名位置。因此,主要要记住的是,无法撤消301重定向。
(*?对于可能与通用名称混淆的初学者,使用客户端而不是浏览器,因为不仅浏览器能够浏览url,而且浏览器机器人不是浏览器。)
307:临时重定向在http 1.1中,301重定向表示资源已临时移动,客户端应将原始资源的?url用于以后的请求。
对于seo,这意味着客户端应遵循重定向,但搜索引擎不应将其serp中的链接更新到新的临时页面。
在307重定向中,pagerank?不会从原始资源传递到新资源–与301重定向相反。
302:发现这意味着客户端正在寻找的资源是在http 1.1版本的另一个url上找到的,但已在http 1.0中临时移动了。
302和307在几乎所有情况下,302和307重定向将被视为相同。但是302状态代码并不一定意味着客户端必须遵循重定向,并且如果它决定呆在那里,则不认为是错误。
现代客户很可能会跟随新的目的地,但是一些老客户可能会错误地停留在相同的url上。
与302状态代码相反,307状态代码保证不会更改请求方法。例如,get请求必须继续进行get和post到post。
使用302状态代码,一些旧的或有漏洞的客户端可能会更改方法,这可能会导致意外行为。
对于临时重定向,您可以使用302或307-但我更喜欢307。
对于例行重定向任务,应使用301(永久重定向)和307(临时重定向)状态码,具体取决于您在网站上实施的更改类型。在两种情况下,重定向的语法都不会改变。
您可以通过apache上的服务器配置文件.htaccess,nginx上的example.conf文件或通过插件(如果使用wordpress)来处理重定向。
在所有情况下,它们都具有用于编写重定向规则的相同语法。它们仅与配置文件中使用的命令不同。例如,在apache上的重定向将如下所示:
选项+关注符号链接 在rewriteengine上 重定向匹配301 ^ / oldfolder / / newfolder /(您可以在此处阅读有关符号链接的信息)。
在nginx服务器上,它看起来像:
重写^ / oldfolder / / newfolder /永久;用于告知服务器状态码重定向的命令和操作命令不同。例如:
重定向服务器的状态码:“?301”与“永久”动作命令:“ redirectmatch”与“ rewrite”。但是重定向的语法(^ / oldfolder / / newfolder /)都相同。
在apache上,确保在服务器上启用了mod_rewrite和mod_alias模块(负责处理重定向)。
由于使用最广泛的服务器类型是apache,因此以下是.htaccess apache文件的示例。确保.htaccess文件具有这两行:
选项+关注符号链接 在rewriteengine上置于重定向规则上方,并将规则置于其下方。
若要了解下面的示例,您可以参考下表regexp基础知识。
* 零次或多次
+ 一次或多次
。 任何单个字符
? 零次或一次
^ 字符串的开始
$ 字符串结尾
a | b or运算符“ |” a或b
(z) 记住调用$ 1时要使用的匹配项
重定向单个url删除页面或更改页面url时使用的最常见且使用最广泛的重定向类型。例如,假设您将url从/ old-page /更改为/ new-page /。重定向规则为:
rewriterule ^ old-page(/?| /.*)$ / new-page / [r = 301,l]要么
重定向匹配301 ^ / old-page(/?| /.*)$ / new-page /两种方法之间的唯一区别是,第一种使用apache mod_rewrite模块,第二种使用mod_alias。可以使用两种方法来完成。
正则表达式“ ^”表示url必须以“ / old-page”开头,而(/?|/.*)$表示必须重定向“ / old-page /”后跟斜杠“ /”或不完全匹配的任何内容。到/ new-page /。
我们也可以使用(。*),即^ / old-page(。*),但是问题是,如果您有另一个具有类似url的页面,例如/ old-page-other /,则当我们只想重定向/ old-page /。
以下url将匹配并定向到新页面:
/旧页/ /新一页/
/旧页 /新一页/
/old-page/?utm_source=facebook.com /new-page/?utm_source=facebook.com
/ old-page / child-page / /新一页/
它将页面url的任何变体重定向到一个新的页面。如果我们以以下形式使用重定向:
重定向301 /旧页面/ /新页面/…如果不使用正则表达式,则所有具有utm查询字符串的url,例如/old-page?utm_source=facebook.com(由于url通常用于在社交网络上共享,因此很常见),它将最终为404。
甚至没有尾部斜杠“ /”的/ old-page也会以404结尾。
重定向所有除外假设我们有很多url,例如/ category / old-subcategory-1 /,/ category / old-subcategory-2 /,/ category / final-subcategory /,并且希望将所有子类别合并到/ category / final-subcategory /中。我们在这里需要“所有除外”规则。
rewritecond%{request_uri}!/ category / final-subcategory / rewritecond%{request_filename}!-f rewriterule ^(类别/)。/ category / final-subcategory / [r = 301,l]在这里,我们要重定向第三行/ category /下的所有内容,除非第四行是/ category / final-subcategory /。第二行还有“!-f”规则,这意味着忽略任何文件,例如图像,css或javascript文件。
否则,如果我们拥有诸如“ /category/image.jpg”之类的资产,它也会被重定向到“ / final-subcategory /”并造成图像中断。
目录变更如果您进行了类别重组,并且想要将旧目录下的所有内容都移动到新目录中,则可以使用以下规则。
rewriterule ^旧目录$ /新目录/ [r = 301,nc,l] rewriterule ^旧目录/(.*)$ /新目录/ $ 1 [r = 301,nc,l]我在目标服务器中使用$ 1告诉服务器,它应该记住/ old-directory /之后的url中的所有内容(即/ old-directory / subdirectory /),并将其(即“ / subdirectory /”)传递到目的地。结果,它将被重定向到/ new-directory / subdirectory /。
我使用了两个规则:一种情况是末尾没有斜杠,另一种情况是有斜杠。
我可以在末尾使用(/?|.*)$ regexp将它们组合为一条规则,但是当所请求的没有尾部斜杠的url有查询字符串时,这会引起问题并在url末尾添加“ //”斜杠(即,“ / old-directory?utm_source = facebook”将被重定向到“ / new-directory //?utm_source = facebook”)。
从网址中删除单词假设您的网站上有100个url,城市名称为“芝加哥”,并且想要将其删除。
例如,对于url http://yourwebiste.com/example-chicago-event/,重定向规则为:
rewriterule ^(。*)-芝加哥-(。*)http://%{server_name} / $ 1- $ 2 [nc,r = 301,l]如果示例url的格式为http:// yourwebiste.com/example/chicago/event/,则重定向将为:
rewriterule ^(。*)/ chicago /(.*)http://%{server_name} / $ 1 / $ 2 [nc
上一个:微薄为企业网站建设带来更多发展空间
下一个:网站建设之网站logo为什么大多数放在左边,放哪里比较合适?
镇远网站建设,镇远做网站,镇远网站设计