• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Windows虚拟主机与VPS如何实现301重定向(asp.net)
    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重定向到 www.jb51.net,那么我们在程序根目录下的Web.config文件中的configuration>节点内加入以下代码,即可。
    复制代码 代码如下:

    system.webServer>
    rewrite>
    rules>
    rule name="Redirect" stopProcessing="true">
    match url=".*" />
    conditions>
    add input="{HTTP_HOST}" pattern="^jb51.net$" />
    /conditions>
    action type="Redirect" url="https://www.jb51.net/{R:0}" redirectType="Permanent" />
    /rule>
    /rules>
    /rewrite>
    /system.webServer>

    可惜的是,很多Windows虚拟主机空间用的还是IIS6.0,那么IIS6.0有没有方法实现301重定向呢?请参考第二种方式。
    2、第二种方式:通过httpModules的URL拦截实现
    我们首先在项目中添加一个新的类库,假设名称叫“SiteSense.Domain”。在此类库下添加一个“DomainLocation”的类,并实现了IHttpModule接口,代码如下:
    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web;
    using System.Configuration;
    namespace SiteSense.Domain
    {
    public class DomainLocation : IHttpModule
    {
    public void Dispose()
    {
    }
    public void Init(HttpApplication context)
    {
    context.AuthorizeRequest += (new EventHandler(Process301));
    }
    public void Process301(object sender, EventArgs e)
    {
    HttpApplication app = (HttpApplication)sender;
    HttpRequest request = app.Context.Request;
    string lRequestedPath = request.Url.DnsSafeHost.ToString();
    string strDomainURL = ConfigurationManager.AppSettings["WebDomain"].ToString();
    string strWebURL = ConfigurationManager.AppSettings["URL301Location"].ToString();
    //拦截到的Url不包含“www.jb51.net”,而包含“jb51.net”
    if (lRequestedPath.IndexOf(strWebURL) == -1 lRequestedPath.IndexOf(strDomainURL) != -1)
    {
    app.Response.StatusCode = 301;
    app.Response.AddHeader("Location", lRequestedPath.Replace(lRequestedPath, "http://" + strWebURL + request.RawUrl.ToString().Trim()));
    app.Response.End();
    }
    }
    }
    }

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

    appSettings>
    add key="WebDomain" value="jb51.net"/>
    add key="URL301Location" value="www.jb51.net"/>
    /appSettings>

    在system.web>节点内的httpModules>节点,加入以下代码
    复制代码 代码如下:
    add name="DomainLocation" type="SiteSense.Domain.DomainLocation, SiteSense.Domain"/>

    即可实现301重定向。完成后,我们可以访问jb51.net 发现在浏览器栏内已经自动变为 www.jb51.net 。为了确认301重定向成功,我开发了个检测网页HTTP返回状态值的工具,可以用于检测某网址是否做了301重定向,网址是:https://www.jb51.net/http_header/ 。下图是,我用该工具对做完301重定向后的检测。

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

    您可能感兴趣的文章:
    • Asp.Net实现404页面与301重定向的方法
    • 301重定向代码合集(iis,asp,php,asp.net,apache)
    • asp.net php asp jsp 301重定向的代码(集合)
    • asp,asp.net,php,jsp下的301转向代码
    • ASP.NET中的跳转 200, 301, 302转向实现代码
    • ASP.NET实现301重定向方法
    上一篇:无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误的解决
    下一篇:ASP.NET 获取存储过程返回值的实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Windows虚拟主机与VPS如何实现301重定向(asp.net) Windows,虚拟主机,与,VPS,如何,