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

 更新时间:2021年9月22日 10:18  点击:1332
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程序。

[!--infotagslink--]

相关文章

  • apache 与htaccess 301重定向代码

    apache下301重定向代码 新建.htaccess文件,输入下列内容(需要开启mod_rewrite): 1)将不带www的域名转向到带www的域名下 options +followsymlinks rewriteengine on rewritec...2016-01-28
  • header() 301重定向实现代码

    先来看一个实例, header('location: http://www.111cn.net/'); 上面是简单的调跳,我们要做永久转向怎么做呢。如下。 语法 header(string,replace,http_response_cod...2016-11-25
  • Php实现301重定向跳转代码

    在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦。 一:更推荐这种方法...2016-11-25
  • .htaccess 301重定向详细教程

    重定向老域名.com到www.新域名.com 代码如下 复制代码 RewriteEngine On RewriteCond %{HTTP_HOST} !老域名.com$ [NC] RewriteRule ^(.*)$ http://...2016-01-28
  • 比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法

    从iis中设置url永久转向就可以,看上去很容易,用了一会儿才发现,参数都没有带上。...2016-01-27
  • PHP获取301重定向页面跳转后真实URL地址

    今天看到一个朋友利用php socket来获取的301跳转之后地地址了,其实我们还有一个非常简单办法了,就是使用php get_headers()函数获取数获取http头信息了,下面来看看我们的...2016-11-25
  • 301重定向代码与方法

    301重定向代码与方法 PHP下的301重定向      Header( "HTTP/1.1 301 Moved Permanently" ) ;   Header( "Location: http://www.111cn.net" );   ?   ASP下...2016-11-25
  • Nginx下301重定向域名的方法小结

    在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。...2016-01-27
  • asp.net php jsp asp 301重定向实现代码

    网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向。下面就以我的www.111cn.net为例,因为很多时候你没有独立的服务器或你的apache不支持.haccess文件...2016-11-25
  • apache 301重定向与重定向规则

    apache主机通过htaccess文件来实现301重定向的方法,首先看下面代码 代码如下 复制代码 RewriteEngine on RewriteCond %{HTTP_HOST} ^(aaa.org)(:80)?...2016-01-28
  • 新浪SAEf域名301重定向设置

    本文章主要是介绍在新浪sea上做301的一个重点,后面的php 301定向我们都知道了我只是简单的加了一个判断并没有什么不同。 网站从新浪SAE搬过来,以前的域名还能访问,...2016-11-25
  • 301重定向代码(php apache)

    使用 HTACCESS 文件 添加吧,这是代码 Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^domain.com[NC] RewriteRule ^(.*)$ http://www.111cn.ne...2016-11-25
  • php 301重定向跳转解决方法

    301重定向就是告诉搜索引擎永远都改变了地址了,这个就是跳转了会返回一个301状态码给搜索引擎了,所有搜索引擎都遵守这个规则了。 一、网站初期,一般只需做不带www...2016-11-25
  • php 301重定向代码

    网页更改地址后想要对搜索引擎友好的最好措施就是做301重定向,如果不是暂时把某个或某些网页转移的话,我们都认为做301重定向比较合适。 下面一款php教程常用的301...2016-11-25
  • iis和apache及PHP页面设置301重定向跳转方法

    301重定向有很多办法可以实现,如iis可以,apache,php,asp等等都可以快速的设置页面301重定向跳转了,下面我来给各位同学介绍介绍 本文将通过IIS、APACHE、ASP、PHP几...2016-11-25
  • Nginx下301重定向域名方法

    进行了301重定向,把www.111cn.net和111cn.net合并,并把之前的域名也一并合并. 有两种实现方法,第一种方法是判断nginx核心变量host(老版本是http_host): server { ser...2016-09-20
  • Windows虚拟主机与VPS如何实现301重定向(asp.net)

    301重定向应该是研究SEO必须掌握的技术。如果你是刚接触SEO的菜鸟,想了解什么是301重定向,请看《html实现301重定向的方法》一文,我在该篇随笔中引用了Google网站站长工具对301重定向的解释...2021-09-22
  • asp/asp.net/php实现301重定向代码

    asp教程/asp.net教程/php教程实现301重定向代码,一般我们做301是全用iis,apache来实现,在没有操作服务器的时我们再用脚本来实现,代码如下。 1、asp下的301重定向代码 <...2016-11-25
  • apache 301重定向的详细做法

    301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地...2016-01-28
  • 网站换域名怎么做301重定向

    网站301重定向怎么做?有很多人都遇到了这样的困难,石家庄seo网站博客在做的时候同样也是遇到了这个问题,网站的301重定向是有利于网站优化的,可以集中网站首页的权重,那么...2016-10-10