立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 5627|回复: 0

[Windows系统教程] Windows虚拟主机与VPS如何实现301重定向(asp.net)

[复制链接]

135

主题

17

回帖

882

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
882
发表于 2015-2-18 16:59:57 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
301重定向应该是研究seo必须掌握的技术。如果你是刚接触SEO的菜鸟,想了解什么是301重定向,请看《html实现301重定向的方法》一文,我在该篇随笔中引用了Google网站站长工具对301重定向的解释301重定向这么重要,那么如何实现301重定向呢?卢松松在他的《详解301永久重定向实现方法》一文中介绍了多种实现301重定向的方法,但里面的方法对于使用Windows虚拟主机或是Windows vps的朋友来说,除了单个页面设置重定向可以用上,IIS 服务器实现整站301重定向的方法却无法应用。因为很多的虚拟主机和VPS的提供商不支持用户去做301重定向。本人遇到了这个问题,非常困扰。搜索了很多的资料,或是在论坛、知名SEO博客询问,得到的建议是:虚拟主机通常没办法做301重定向,建议使用独立服务器。能有台独立主机,肯定好了,但银子有限啊。相信很多朋友都遇到了上述问题。
经过一段时间的研究,我终于找到了Windows虚拟主机与VPS实现301重定向的方法,在这与大家分享:
1、第一种方式:通过Web.config配置实现(要求IIS必须为7.0版本)
假设我们需要将jb51.net 301重定向到[url]www.jb51.net[/url],那么我们在程序根目录下的Web.config文件中的<configuration>节点内加入以下代码,即可。


  1. <system.webServer>
  2. <rewrite>
  3. <rules>
  4. <rule name="Redirect" stopProcessing="true">
  5. <match url=".*" />
  6. <conditions>
  7. <add input="{HTTP_HOST}" pattern="^jb51.net[        discuz_CODE_0        ]quot; />
  8. </conditions>
  9. <action type="Redirect" url="http://www.jb51.net/{R:0}" redirectType="Permanent" />
  10. </rule>
  11. </rules>
  12. </rewrite>
  13. </system.webServer>
复制代码
可惜的是,很多Windows虚拟主机空间用的还是IIS6.0,那么IIS6.0有没有方法实现301重定向呢?请参考第二种方式。
2、第二种方式:通过httpModules的URL拦截实现
我们首先在项目中添加一个新的类库,假设名称叫“SiteSense.Domain”。在此类库下添加一个“DomainLocation”的类,并实现了IHttpModule接口,代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Web;
  5. using System.Configuration;
  6. namespace SiteSense.Domain
  7. {
  8. public class DomainLocation : IHttpModule
  9. {
  10. public void Dispose()
  11. {
  12. }
  13. public void Init(HttpApplication context)
  14. {
  15. context.AuthorizeRequest += (new EventHandler(Process301));
  16. }
  17. public void Process301(object sender, EventArgs e)
  18. {
  19. HttpApplication app = (HttpApplication)sender;
  20. HttpRequest request = app.Context.Request;
  21. string lRequestedPath = request.Url.DnsSafeHost.ToString();
  22. string strDomainURL = ConfigurationManager.AppSettings["WebDomain"].ToString();
  23. string strWebURL = ConfigurationManager.AppSettings["URL301Location"].ToString();
  24. //拦截到的Url不包含“www.jb51.net”,而包含“jb51.net”
  25. if (lRequestedPath.IndexOf(strWebURL) == -1 && lRequestedPath.IndexOf(strDomainURL) != -1)
  26. {
  27. app.Response.StatusCode = 301;
  28. app.Response.AddHeader("Location", lRequestedPath.Replace(lRequestedPath, "http://" + strWebURL + request.RawUrl.ToString().Trim()));
  29. app.Response.End();
  30. }
  31. }
  32. }
  33. }
复制代码

注:此类库须添加引用“System.Configuration” 和“System.Web”命名空间。
然后我们在程序根目录下的Web.config文件中的<configuration>节点内加入以下代码

  1. <appSettings>
  2. <add key="WebDomain" value="jb51.net"/>
  3. <add key="URL301Location" value="www.jb51.net"/>
  4. </appSettings>
复制代码

在<system.web>节点内的<httpModules>节点,加入以下代码
  1. <add name="DomainLocation" type="SiteSense.Domain.DomainLocation, SiteSense.Domain"/>
复制代码
即可实现301重定向。完成后,我们可以访问jb51.net 发现在浏览器栏内已经自动变为[url]www.jb51.net[/url]。为了确认301重定向成功,我开发了个检测网页HTTP返回状态值的工具,可以用于检测某网址是否做了301重定向,网址是:http://www.jb51.net/http_header/ 。下图是,我用该工具对做完301重定向后的检测。

888888.jpg
上述两种实现301重定向的方法,只适合ASP.NET程序,不适用于ASP程序。

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程 ( 皖ICP备15000319号-1 )

GMT+8, 2024-12-23 19:49

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表