论坛中碰到如此问题:
我们做了一个网站,域名是www.3322173.com
没想到今天忽然发现了
www.qiepeng.cn的内容和我们的是一模一样...内容也是同步更新,只是把内容中3322173.com替换成qiepeng.cn
我关闭我自己的IIS后,两个域名都不能访问了.
我郁闷啊,这是什么样的技术哦.怎么解决呢?

这个事情肇事人很无耻,也很容易对付,只要把对方服务器ip屏蔽掉就ok了,如何实现的呢,下面就以上面的例子讲述。

主要思路就是url重定向。

打开iis,新建一个网站,名称为test,配置同一般的.net2.0配置。

建立成功后,有些地方需要修改。

为404错误重定向,这个是最关键的。选择属性-自定义错误-列表中双击404,消息类型选url,url的地方输入 /Handler.ashx

让iis不处理aspx等文件。选择属性-主目录-配置-应用程序扩展中把aspx删除。

这样iis就配置完成了,接着写一小段代码来处理404错误重定向的页面就可以了。

这里用httphandler来处理,也就是上面的Handler.ashx文件,这样不容易和其他文件冲突,用dll和webconfig配合其实更好。

打开vss2005,建立新网站,就是刚刚的iis路径。删掉那个default.aspx。

添加新项-一般处理程序-生成一个Handler.ashx。

添加如下代码:

网站可以如此复制?<%@WebHandlerLanguage="C#"Class="Handler"%>
网站可以如此复制?
网站可以如此复制?
usingSystem;
网站可以如此复制?
usingSystem.Web;
网站可以如此复制?
网站可以如此复制?网站可以如此复制?
publicclassHandler:IHttpHandler...{
网站可以如此复制?
网站可以如此复制?网站可以如此复制?
publicvoidProcessRequest(HttpContextcontext)...{
网站可以如此复制?
网站可以如此复制?
//标记一下
网站可以如此复制?
context.Response.ContentType="text/plain";
网站可以如此复制?
网站可以如此复制?
//取得404错误重定向的参数和主机
网站可以如此复制?
stringstrQuery=context.Request.Url.Query.Replace("?404;","").ToLower();
网站可以如此复制?
stringlocalHost=context.Request.Url.Authority.ToLower();
网站可以如此复制?
网站可以如此复制?
//计算目标地址
网站可以如此复制?
stringtargetHost="www.3322173.com";
网站可以如此复制?
stringqueryUrl=strQuery.Replace(localHost,targetHost);
网站可以如此复制?
网站可以如此复制?
网站可以如此复制?
网站可以如此复制?
try
网站可以如此复制?网站可以如此复制?
...{
网站可以如此复制?
//获取目标页面内容
网站可以如此复制?
System.Net.WebClientwb=newSystem.Net.WebClient();
网站可以如此复制?
byte[]b=wb.DownloadData(queryUrl);
网站可以如此复制?
网站可以如此复制?
stringtype=wb.ResponseHeaders["Content-Type"];
网站可以如此复制?
网站可以如此复制?
//判断是否文档页面,这里可以稍微复杂些考虑到js和css等其他文件,多判断几个条件就可以了
网站可以如此复制?
if(!string.IsNullOrEmpty(type)&&type.ToLower().StartsWith("text/html"))
网站可以如此复制?网站可以如此复制?
...{
网站可以如此复制?
//替换文档内容中的主机地址
网站可以如此复制?
stringstr=System.Text.Encoding.Default.GetString(b);
网站可以如此复制?str
=str.Replace(targetHost,localHost);
网站可以如此复制?context.Response.Write(str);
网站可以如此复制?}

网站可以如此复制?
else
网站可以如此复制?网站可以如此复制?
...{
网站可以如此复制?
//如果是图片等直接输出
网站可以如此复制?
context.Response.BinaryWrite(b);
网站可以如此复制?}

网站可以如此复制?context.Response.End();
网站可以如此复制?}

网站可以如此复制?
catch
网站可以如此复制?网站可以如此复制?
...{}
网站可以如此复制?}

网站可以如此复制?
网站可以如此复制?网站可以如此复制?
publicboolIsReusable...{
网站可以如此复制?网站可以如此复制?
get...{
网站可以如此复制?
returnfalse;
网站可以如此复制?}

网站可以如此复制?}

网站可以如此复制?
网站可以如此复制?}

效果如下

网站可以如此复制?

直接运行就可以看到效果了。

申明:本文只针对技术方面讨论,请不要用于不正当途径,否则后果自负,本文作者jinjazz不承担任何责任。

相关文章: