返回列表 发帖

ASP不用第三方组件也可以重写URL

ASP不用第三方组件也可以重写URL,这样来做:
1、IIS管理器-选中一个站点-右键属性-自定义错误信息-选中404-编辑-消息类型选URL-URL中输入:/404.asp
2、在站点根目录建立个404.asp文件,内容如下:
<%@language="javascript"%>
<%
Response.Status = "200 OK";//重设HTTP状态
Response.Buffer = true;
Response.Charset = "gb2312";
Response.ContentType = "text/html";

//这里的QUERY_STRING格式是:状态 + 分号 + 地址。地址即未找到的地址
//例如:404;http://www.com.cn:80/topic/9527.html
var pQS = String(Request.ServerVariables("QUERY_STRING"));
//1、根据QUERY_STRING格式将strQS解析一下,获得用户请求地址:/topic/9527.html
var pURL = pQS.match(/http:\/\/[^\/]+(.*)/i)[1];
Response.Write("请求地址:" + pURL + " <br/>");
//使用正则检测文件路径
var arr;
if ((arr = pURL.match(/\/topic\/(\d+)\.html/i)) != null)
{
    Response.Write("目标地址:topic.asp?id=" + arr[1] + " <br/>");
    Session("id") = arr[1];//用Session传递QUERY_STRING的值
    Server.Transfer("topic.asp");//目标页面用Session来获取id,如果不用SESSION,还是可以用该文件取QUERY_STRING的方法获取id,topic.asp继承的是404.asp的QUERY_STRING服务器变量
}
else
{
    //不满足URL重写规则
}
%>
以前写过一个域名绑定的URL重写,是一个多用户的建站系统,既要URL重写,又要绑定域名,但是不能用重定向,只有重写HOST报头,然后将绑定的域名写到X-HOST报头里。微软提供HttpFilterProc API让用户可以修改HTTP报头信息,这个相对容易点,做URLRewrite,需要正则支持,C下面的正则就*nix编译过,win32下一直没编译过,虽然sscanf支持简单正则,但不能满足需要,还是用第三方组件方便些,半路出家的与专业人士做的还是有分别的。

图片缩略现在有很多成熟的解决方案,我一直用的是ImageMagcik的组件,它可以缩略gif动态图片,自己来写只有借用GDI+的API,因为自己做格式分析和颜色矩阵相当麻烦,研究研究图片格式没什么坏处(象无组件上传就可以用图片格式来获取宽高),如果做业务,还是用成熟的解决方案,速度快而且颜色丢失得少

分布式应用没搞过,不知道跟服务器均衡有没有什么关联,将业务逻辑分给不同的主机处理,例如将图片放一个服务器,将数据库放一个服务器,将查询放一个服务器,将缓存放一个服务器
天行健,君子以自强不息
地势坤,君子以厚德载物
黑色海岸线欢迎您

QQ群:7212260
致力于探索WEB技术精髓:http://www.bitechcn.com
点这里加我!

返回列表 回复 发帖