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="http://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重定向,网址是:http://www.jb51.net/http_header/ 。下图是,我用该工具对做完301重定向后的检测。

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

时间: 2024-10-16 04:27:48

Windows虚拟主机与VPS如何实现301重定向(asp.net)_实用技巧的相关文章

Asp.Net实现404页面与301重定向的方法_实用技巧

本文实例讲述了Asp.Net实现404页面与301重定向的方法.分享给大家供大家参考.具体实现方法如下: 从一种程度来讲301重定向与404页面没什么关系为什么我要拿到一起来讲来,因为都很简单实现,所在我就一起介绍一下了. 如何在 asp.net 中设置404页面的方法记录下来. 下边首先看看之前的设置方法,web.config文件中: 复制代码 代码如下: <configuration>     <system.web>         <customErrors mode

关于服务器或虚拟主机不支持 AjaxPro 的问题终极解决方法_实用技巧

方法为:在网站属性中 -->> 主目录 -->>配置 -->> 添加一个 .ashx 文件的映射 就可以了 , 映射的文件路径在:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 扩展名: .ashx 动作:GET,HEAD,POST,DEBUG 检查文件是否存在的勾去掉 首先要在Web.config的<system.web>中添加下面的东东 <httpHandlers>

IIS 301重定向与程序代码实现301重定向的差别_相关技巧

先说一下IIS 301重定向的做法: IIS中301重定向 打开"Internet信息服务",右击你要跳转的文件夹或者文件,在弹出的右键菜单中选择"属性"弹出的对话框中,"目录"选项下找到"连接到资源是的内容来源",选择"重定向到URL",在下面的文本框中输入要跳转到的页面同时,将"客户端将定向到" 下面的复选框 "资源的永久重定向"选上 点击"应用&quo

windows中允许服务与桌面交互的更改方法示例_实用技巧

在Windows服务的安装类ProjectInstaller中加入以下方法: 复制代码 代码如下: protected override void OnCommitted(System.Collections.IDictionary savedState){base.OnCommitted(savedState);//将服务更改为允许桌面交互模式ConnectionOptions coOptions = new ConnectionOptions();coOptions.Impersonatio

在一个网站下再以虚拟目录的方式挂多个网站的方法_实用技巧

(asp.net的应用). 在网上一搜有很多此类文章,但我需要将公司的复杂的,较大的web应用也以此方式操作,比较的头大.一般的文章建议将bin和Web.config合并. 我试了一下,直接访问子网站,IE里提示Web.config,那行有错,我直接将子网站的web.config相应位置,添加一行remove,直接删除掉父级网站的web.config配置. 看似复杂的web.config,实际上只改了 2处: 复制代码 代码如下: <pages theme="SiteTheme"

什么是WebsitePanel(基于windows虚拟主机管理系统)_服务器其它

WebsitePanel是一套比较容易上手的Windows系统中的虚拟主机管理系统.他可以同时管理多台服务器,并且拥有一个简洁的.稳定的统一管理界面.通过这个界面,我们可以在浏览器上管理所有的FTP账号.网站.邮箱以及数据库等,国外类似的虚拟主机管理系统还有DirectAdmin,两者在国外使用范围都很广泛. WebsitePanel的前身是DotNetPanel,之前是付费软件,被微软公司收购后变成了免费的开源软件.软件由主控端和客户端构成,可以在线自动开通空间,邮箱,SQL2000,SQL2

美国空间商决战中国市场 Windows虚拟主机必不可少

中介交易 SEO诊断 淘宝客 云主机 技术大厅 美国虚拟主机中大部分都是Linux主机,虽然Linux主机相对Windows主机来说更便宜,但是依照国内用户的使用习惯来看,还是Windows主机占主流.所以,美国虚拟主机抢占中国市场提供Windows主机是很有必要的.而今天我们就来盘点一下拥有Windows主机的美国空间商. Godaddy共享主机均提供Windows主机 虽然VPS主机和独立主机被人们被贴上高品质的标签,但是因为市场上的企业还是中小企业居多,所以这两大类型主机的市场需求潜能还没

最好的Windows虚拟主机空间

随着近年来选择Windows主机的用户越来越多.主机91一直致力于为广大.NET开发人员提供专业的香港Windows虚拟主机空间. 领先的服务器配置 主机91的Windows虚拟主机空间采用的是最稳定的Windows服务器环境配置.具有极高的稳定性和安全性,能够满足不同类型用户的需求. 软件配置: 1.操作系统:Windows Server 2008 R2 2.IIS版本:IIS 7.5 3.支持ASP.NET 1.1/2/3.5SP1/4.5 4.支持ASP .NET MVC 2/3/4 5.

HostEase美国Windows虚拟主机重装上阵备战万圣节

中介交易 SEO诊断 淘宝客 云主机 技术大厅 深秋市场格外热闹,国庆中秋双节刚过,万圣节又如约而至,这明显刺激了市场用户的购买激情.为了让用户过一个难忘的万圣节之夜,美国虚拟主机商HostEase也是大手笔出动,不仅推出了市场最为瞩目的Windows主机套餐,而且还强化产品优势让用户获得更高性价比体验. 三款Windows主机套餐各有千秋 以速度优势闻名市场的美国主机商HostEase,今年上半年大力扩充产品线给中国用户带来了博客型.扩展型.无限型等三款Windows虚拟主机套餐.这三款套餐适