rewriter二级域名映射技术的实现方式介绍
2009-04-15 12:13
295 查看
为什么要使用二级域名呢?如果从用户使用习惯来说,二级域名比二级目录更容易记忆,看上去更加直观,但从网站优化的角度讲意义就不同了,二级域名对搜索引擎来说相当于是一个独立域名,一个独立域名的权重自然是要比二级目录高了,所以在排名上就会有一定优势.这也是为什么这么多人都想实现二级域名的原因了.
下面我们来说说二级域名主要的几种实现方式:
第一种:使用第三方ISAPI工具,目前用的比较多的是ISAPI_Rewrite_Lite免费版,FUll版的需要花钱购买,目前网上出现的所谓full破解版的都是假的,还不能算真正破解,使用一段时间后,还是需要注册的.所以在这里我提醒大家千万不要用了,然后full版的功能比较强,对二级域名支持也比较好,我相信这个东西对个人来说没多少人会买吧,而且人家在国外毕竟也不方面.
第二种:使用免费开源的组件,如果你是小网站,而且网站是用.net c#开发的话,最适合不过的就是微软提供的urlrewriter工具,下载地址:www.ytbxw.com/soft/urlrewriter.rar,但有个问题,该组件只支持无cookie的session,如果你的网站采用的是session的话,一转发session就会丢失,应该尽量改成cookie来实现,什么是无cookie的session呢,就是把session的信息存放在网址上,比如:http://(@23jshssdfsf)www.ytbxw.com,我想大家都不愿意看到这样的网址吧,如果你用了cookie,那就基本没什么问题了,不过如果你想实现二级域名的话还有一个问题,那就是cookie跨域名时候发现会丢失,因为每个二级域名相当于是独立的域名,你访问二级域名,也就等于访问了另一个网站,自然cookie就会丢失了,那有什么办法来解决呢,我们可以通过cookie的domain来解决,把domain设置为"ytbxw.com".为什么我前面说urlrewriter比较适合小网站呢,应该urlrewriter效率相对会比较低一点,而且有点吃内存,大一点的网站或者映射规则比较多的情况下是不推荐使用.
下面介绍另一种开源的ISAPI工具Ionic's Isapi Rewrite Filter (IIRF),目前的最高版本是1.2.15,该工具是用C写的,执行效率比较高,如果你用的是vs2005,需要更改makefile,VC="C:/Program Files/Microsoft Visual Studio 8/VC",必须得加双引号,原文件中是没有的,否则编译会出错,如果你的网页中存在form提交的,地址重写后postback所指的是转发前的地址,所以就无法提交到相应的处理页面,可以在.net工程中新建目录App_Browsers,新建Form.browser文件,以下是内容:
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="Ytbxw.FormRewriterControlAdapter" />
</controlAdapters>
</browser>
</browsers>
再创建一个类:
using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace Ytbxw
{
public class FormRewriterControlAdapter :
System.Web.UI.Adapters.ControlAdapter
{
protected override void Render(HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter : HtmlTextWriter
{
public RewriteFormHtmlTextWriter(HtmlTextWriter writer)
: base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(TextWriter writer)
: base(writer)
{
this.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
HttpContext context = HttpContext.Current;
if (context.Items["ActionAlreadyWritten"] == null)
{
value = context.Request.ServerVariables["HTTP_X_REWRITE_URL"]
?? context.Request.RawUrl;
context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
}
作者:傅征宇 来源:www.ytbxw.com 转载请保留来源,非常感谢!
下面我们来说说二级域名主要的几种实现方式:
第一种:使用第三方ISAPI工具,目前用的比较多的是ISAPI_Rewrite_Lite免费版,FUll版的需要花钱购买,目前网上出现的所谓full破解版的都是假的,还不能算真正破解,使用一段时间后,还是需要注册的.所以在这里我提醒大家千万不要用了,然后full版的功能比较强,对二级域名支持也比较好,我相信这个东西对个人来说没多少人会买吧,而且人家在国外毕竟也不方面.
第二种:使用免费开源的组件,如果你是小网站,而且网站是用.net c#开发的话,最适合不过的就是微软提供的urlrewriter工具,下载地址:www.ytbxw.com/soft/urlrewriter.rar,但有个问题,该组件只支持无cookie的session,如果你的网站采用的是session的话,一转发session就会丢失,应该尽量改成cookie来实现,什么是无cookie的session呢,就是把session的信息存放在网址上,比如:http://(@23jshssdfsf)www.ytbxw.com,我想大家都不愿意看到这样的网址吧,如果你用了cookie,那就基本没什么问题了,不过如果你想实现二级域名的话还有一个问题,那就是cookie跨域名时候发现会丢失,因为每个二级域名相当于是独立的域名,你访问二级域名,也就等于访问了另一个网站,自然cookie就会丢失了,那有什么办法来解决呢,我们可以通过cookie的domain来解决,把domain设置为"ytbxw.com".为什么我前面说urlrewriter比较适合小网站呢,应该urlrewriter效率相对会比较低一点,而且有点吃内存,大一点的网站或者映射规则比较多的情况下是不推荐使用.
下面介绍另一种开源的ISAPI工具Ionic's Isapi Rewrite Filter (IIRF),目前的最高版本是1.2.15,该工具是用C写的,执行效率比较高,如果你用的是vs2005,需要更改makefile,VC="C:/Program Files/Microsoft Visual Studio 8/VC",必须得加双引号,原文件中是没有的,否则编译会出错,如果你的网页中存在form提交的,地址重写后postback所指的是转发前的地址,所以就无法提交到相应的处理页面,可以在.net工程中新建目录App_Browsers,新建Form.browser文件,以下是内容:
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="Ytbxw.FormRewriterControlAdapter" />
</controlAdapters>
</browser>
</browsers>
再创建一个类:
using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace Ytbxw
{
public class FormRewriterControlAdapter :
System.Web.UI.Adapters.ControlAdapter
{
protected override void Render(HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter : HtmlTextWriter
{
public RewriteFormHtmlTextWriter(HtmlTextWriter writer)
: base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(TextWriter writer)
: base(writer)
{
this.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
HttpContext context = HttpContext.Current;
if (context.Items["ActionAlreadyWritten"] == null)
{
value = context.Request.ServerVariables["HTTP_X_REWRITE_URL"]
?? context.Request.RawUrl;
context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
}
作者:傅征宇 来源:www.ytbxw.com 转载请保留来源,非常感谢!
相关文章推荐
- WMI技术介绍和应用——查询快捷方式、映射磁盘和虚拟内存信息
- C#.NET 关于URL重写技术汇总(三)之域名进行重写,即实现二级或多级域名
- 借助微软提供的url重写类库URLRewriter.dll(1.0)实现程序自动二级域名,域名需要泛解析
- C#.NET 关于URL重写技术汇总(三)之域名进行重写,即实现二级或多级域名
- 二级域名的完美实现
- 技术实战:基于 MHA 方式实现 MySQL 的高可用
- 链接地址无文件名的实现方式----URL重写技术http://hi.baidu.com/fuyujiang/blog/item/fdf8830aed20923ab0351d12.html
- 三维漫游控制方式与实现技术
- ASP.NET中实现二级或多级域名(修改UrlRewrite)
- Puppet基础篇10-自定义fact实现的四种方式介绍
- JS方式实现省市二级联动
- ThreadLocal实现方式&使用介绍---无锁化线程封闭
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- 用Ajax技术和dwr框架两种方式实现下拉列表的级联效果
- Nginx配置 批量二级域名映射到二级目录
- MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(一)
- Ajax 技术三种实现方式之xmlhttp+webform篇 (二)
- 腾讯的webqq,实现方式是我们一年前就实现了的技术
- 分布式锁简单入门以及三种实现方式介绍
- IP组播技术介绍及实现例子