注册
登录
论坛
搜索
社区银行
帮助
导航
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
黑色海岸线论坛
»
网络安全
» ASP不用第三方组件也可以重写URL
返回列表
发帖
发短消息
加为好友
chinanic
(黑冰cn)
当前离线
巡海头狼
帖子
6440
我的爱好
阅读权限
150
来自
贵州遵义
在线时间
456 小时
总版主
主题
0
积分
854
贝壳
854 个
性别
男
来自
贵州遵义
注册时间
2005-3-26
最后登录
2011-2-26
楼主
跳转到
»
倒序看帖
打印
字体大小:
t
T
chinanic
发表于 2008-8-21 21:54
|
只看该作者
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
点这里加我!
返回列表
回复
发帖
使用交流
网络安全
网络技术
娱乐休闲
灌水乐园
文学天地
美图欣赏
网站办公
站务处理
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]