时间:2021-07-01 10:21:17 帮助过:10人阅读
- <br><system.webServer> <br><rewrite> <br><rules> <br><rule name="Redirect" stopProcessing="true"> <br><match url=".*" /> <br><conditions> <br><add input="{HTTP_HOST}" pattern="^jb51.net$" /> <br></conditions> <br><action type="Redirect" url="//www.gxlcms.com/{R:0}" redirectType="Permanent" /> <br></rule> <br></rules> <br></rewrite> <br></system.webServer> <br> <br>可惜的是,很多Windows虚拟主机空间用的还是IIS6.0,那么IIS6.0有没有方法实现301重定向呢?请参考第二种方式。 <br><strong>2、第二种方式:通过httpModules的URL拦截实现 <br></strong>我们首先在项目中添加一个新的类库,假设名称叫“SiteSense.Domain”。在此类库下添加一个“DomainLocation”的类,并实现了IHttpModule接口,代码如下: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>using System; <br>using System.Collections.Generic; <br>using System.Text; <br>using System.Web; <br>using System.Configuration; <br>namespace SiteSense.Domain <br>{ <br>public class DomainLocation : IHttpModule <br>{ <br>public void Dispose() <br>{ <br>} <br>public void Init(HttpApplication context) <br>{ <br>context.AuthorizeRequest += (new EventHandler(Process301)); <br>} <br>public void Process301(object sender, EventArgs e) <br>{ <br>HttpApplication app = (HttpApplication)sender; <br>HttpRequest request = app.Context.Request; <br>string lRequestedPath = request.Url.DnsSafeHost.ToString(); <br>string strDomainURL = ConfigurationManager.AppSettings["WebDomain"].ToString(); <br>string strWebURL = ConfigurationManager.AppSettings["URL301Location"].ToString(); <br>//拦截到的Url不包含“www.gxlcms.com”,而包含“jb51.net” <br>if (lRequestedPath.IndexOf(strWebURL) == -1 && lRequestedPath.IndexOf(strDomainURL) != -1) <br>{ <br>app.Response.StatusCode = 301; <br>app.Response.AddHeader("Location", lRequestedPath.Replace(lRequestedPath, "http://" + strWebURL + request.RawUrl.ToString().Trim())); <br>app.Response.End(); <br>} <br>} <br>} <br>} <br> <br>注:此类库须添加引用“System.Configuration” 和“System.Web”命名空间。 <br>然后我们在程序根目录下的Web.config文件中的<configuration>节点内加入以下代码 <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><appSettings> <br><add key="WebDomain" value="jb51.net"/> <br><add key="URL301Location" value="www.gxlcms.com"/> <br></appSettings> <br> <br><strong>在<system.web>节点内的<httpModules>节点,加入以下代码 <br></strong><span><u></u></span> 代码如下:<add name="DomainLocation" type="SiteSense.Domain.DomainLocation, SiteSense.Domain"/> <br>即可实现301重定向。完成后,我们可以访问jb51.net 发现在浏览器栏内已经自动变为 www.gxlcms.com 。为了确认301重定向成功,我开发了个检测网页HTTP返回状态值的工具,可以用于检测某网址是否做了301重定向,网址是://www.gxlcms.com/http_header/ 。下图是,我用该工具对做完301重定向后的检测。 <br></li><li><p><img style="DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto" alt="" src="https://img.gxlcms.com//Uploads-s/new/2019-09-19-201919/20111223005614474.jpg"></p></li><li><p><strong>上述两种实现301重定向的方法,只适合ASP.NET程序,不适用于ASP程序。</strong></p></li><li> </li><li> </li></ol></pre></li></ol></pre>