个人觉得使用Rewrite、正则表达式比较合适PHP,因为PHP使用的就是.html,而ASP.NET的是.aspx。 第一步:映射扩展名,html映射aspx,使用让NET接管html的解析。 打开IIS--网站属性--主目录 ![]() 点“配置” ![]() 点击“添加” 可执行文件是:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 最主要的是“默认文件是否存在”的不要选。 ![]() 确定后,NET就接管解析html了。 第二步:添加Global.cs文件,写上伪静态地址规则。 如:http://www./img.aspx?id=a790 伪静态为: http://www./img/a790.html protected void Application_BeginRequest(Object sender, EventArgs e) { string CurUrl = HttpContext.Current.Request.RawUrl; if (CurUrl.IndexOf(".html") != -1) { //int pos = CurUrl.IndexOf("/")+ 1; //--服务器上用这个 int pos = CurUrl.IndexOf("s/") + 2; //--本地版本 int pos1 = CurUrl.IndexOf("/", pos); string churl = CurUrl.Substring(pos, pos1 - pos); HttpContext.Current.RewritePath("~/" + churl + ".aspx"); return; } } 第三步:在对应的aspx文件写对应的参数接收代码。 如上在img.aspx.cs上写代码: protected void Page_Load(object sender, EventArgs e) { string CurUrl = HttpContext.Current.Request.RawUrl; cGstcGstr = new Gstr(); string aid = cGstr.getMidstr(CurUrl, "img/", ".html"); } 这样aid就得到上面的a790了。 其中cGstr.getMidstr的函数是截取2个字符串之间的字符。 附代码如下: public string getMidstr(string content, string lstr, string rstr) //--获取内容, { if (content == null) return ""; int pos, pos1; string tstr = ""; pos = content.IndexOf(lstr); if (pos == -1) return ""; pos = pos + lstr.Length; pos1 = content.IndexOf(rstr, pos); if (pos1 == -1) return ""; if (pos1 < pos) return ""; tstr = content.Substring(pos, pos1 - pos); return tstr; }
|
|