想做电商网站运营要怎么做,怎么建设销售网站,sqlite做网站数据库,分销渠道管理本系列目录 我们经常说“404错误”#xff0c;你知道他指的是什么意思么#xff1f; 404其实是Http报头所包含的一个“状态码”#xff0c;表明该Http请求失败。那么除此之外#xff0c;还有哪些常用的状态码呢#xff1f;这些状态码和SEO又有什么关系呢#xff1f;每次当… 本系列目录 我们经常说“404错误”你知道他指的是什么意思么 404其实是Http报头所包含的一个“状态码”表明该Http请求失败。那么除此之外还有哪些常用的状态码呢这些状态码和SEO又有什么关系呢每次当用户代理可以理解为就是IE和Firefox向Web站点请求一个URL地址服务器都会给予回复回复内容包括两部分HTTP报头和被请求的内容。但仅从浏览器上我们通常只能看到内容而看不到报头信息。所以我们需要通过一些浏览器插件来观察他们。就我个人而言IE我用WebDeveloper;FireFox我用Fiddler。有兴趣的朋友可以在网上自行下载两个都是相当流行的。对SEO而言我们需要了解的状态代码有重定向301和302被删除404服务器错误500我们依次讲解首先将302。302在asp.net中有一个很常见的原型Response.Redirect()请看代码 protected void Button1_Click(object sender, EventArgs e) { Response.Redirect(~/target.aspx); //Server.Transfer(~/target.aspx); } source.aspx页面上一个ButtonClick事件中代码为Response.Redirect~/target.aspx点击source.aspx页面Button查看该页面对应的状态码结果就是302。如下图我使用的是Web Development不知道为什么enable log之后就无法再转到target页面了各位同学知道原因的请指点一二 但可以查看详细信息可以发现302的影响response指明了要转向的url。 客户端/服务器之间往返的过程其实是这样的1. 点击Button产生回发回发的目标页面仍然是source.aspx所以请求仍由source.aspx页面进行处理这样才能进入source.aspx页面的Click事件2. Click事件中Response.Redirect~/target.aspx所作的事情实际上就是 2.1 将回复中Http报头的状态码改成302 2.1 指明302指向的页面就是target.aspx3. 浏览器用户代理收到回复的报头信息后 3.1 将URL地址栏的地址改成target.aspx 3.2 向target.aspx发出请求和Response.Redirect()同样著名的是Server.Transfer()。但使用Server.Transfer,你会发现页面对应的状态码是200且地址栏的url并不会发生改变仍然是source.aspx这是因为Server.Transfer是完全在服务器端进行跳转的。所以一种很流行但我觉得不那么正确的说法就是应当使用Server.Transfer()而不是Response.Redirect()来提高性能。因为在得到Server.Transfer()性能提升的同时你应该权衡性能的提高和由此产生的代价。很难直接给出一个答案这需要依靠具体的情景来做判断。但我倾向于尽量不使用Server.Transfer()因为1. 性能提升不大节约的其实就是报头信息的往返2. 清晰的URL无论对于终端用户还是开发调试都有很重要的作用。 好了理解了302301也就好办了。302意味着重定向是暂时的而301则是永久的重定向。就SEO而言为了延续链接价值和排除重复内容 我们在以下几种情况下都可能会用到3011. 域名更换2. 多个域名间映射如www.freeflying.com和www.freeflying.cn两个域名其实指向的是同一个网站这就会造成大量的重复内容对网站的排名不利。3. 清除默认索引页的重复问题比如我们输入www.freeflying.com/article/时如果在IIS里进行了设定将指向www.freeflying.com/article/Default.aspx4. 其他的“不同域名相同内容”的重复问题典型的就是URL重写后www.freeflying.com/article/321.html和www.freeflying.com/article.aspx?id321指向的其实都是同一个网页内容。对于404最直观的理解就是页面不存在。如果网站是纯静态的这很好理解但当网站做成动态之后如www.freeflying.com/article/321.html映射为www.freeflying.com/article.aspx?id321虽然id321的文章已经被删除了或者根本不存在但article.aspx这个页面始终是存在的所以HTTP报头的状态码不会是404而是200表示请求成功。我们假设一个网站有id321/342/6739……的文章都被删除了但蜘蛛并不知道它仍然会进行抓取结果它发现这些不同的URL对应的居然全是同一个页面。它就会将其当做重复页面进行处理。500意味着程序内部出现异常比如3/0代码如下 protected void Button1_Click(object sender, EventArgs e) { int i, j; i 8; j 0; this.Label1.Text (i / j).ToString(); } 如果搜索引擎接到一个500的状态码时搜索引擎会理解程序只是出现了暂时性的错误它会在之后继续抓取查看问题是否已经解决这并不会给网站带来太大的问题——只要你能够尽快恢复。但是Asp.net自带的个custom error的web.config配置会让我们在不经意间“失误”。理由和上面讲到的404变200类似当转向自定义的error.aspx之后蜘蛛得到的是成功链接error.aspx的200代码所以蜘蛛会以为报错的originpage.aspx正常的显示内容就是error.aspx的内容。不同url参数的originpage.aspx会被蜘蛛认为是不同的url所以蜘蛛会认为这些所有的url都重复了——后果是很严重的。 好了认识到问题的严重性之后我们来看解决问题的办法太简单了呵呵 protected void Page_Load(object sender, EventArgs e) { //如果你希望搜索引擎知道这个url将不再使用 Response.StatusCode 404; //如果你希望告诉搜索引擎这个url只是出现了暂时的故障 Response.StatusCode 500; //如果你想永久重定向该页面 Response.StatusCode 301; Response.RedirectLocation \website1\target.aspx; }