个人觉得使用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.ms178.cn/img.aspx?id=a790 伪静态为: http://www.ms178.cn/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;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。