我想实现URL重写的效果如 default.aspx?id=1 变成default.aspx
default.aspx?id=1&type =2 变成 default.aspx 就是这种简单的效果,请问怎么实现,我想要例子,不要随便说哈,说详细,我下了个ISAPI_Rewrite 网上说找什么ini 文件可是好像没有 只有http.conf文件, 不管那种方法只要能实现上面要的效果就OK, 对了服务器上有多个网站都要URL重写,高手请教我写一个就OK了!
万分感谢!
请看一下你的提问是不是有问题?
default.aspx?id=1 变成default.aspx?
default.aspx?id=1&type =2 变成 default.aspx?
先把你的问题说清楚吧,这样根本理解不了你要实现什么.
你说去掉参数?那直接在url里去掉不就行了,用得着重写吗?
以下未经测试 你可以参考
protected void Application_BeginRequest(object sender, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl;
string[] pattern1 = new string[1];
string[] replace1 = new string[1];
pattern1[0] = @"^(.+)default.aspx";
replace1[0] = "$1default.aspx?id=1&type=2";
for (int i = 0; i < pattern1.Length; i++)
{
if (Regex.IsMatch(oldUrl, pattern1[i], RegexOptions.IgnoreCase | RegexOptions.Compiled))
this.Context.RewritePath(Regex.Replace(oldUrl, pattern1[i], replace1[i], RegexOptions.Compiled | RegexOptions.IgnoreCase));
}
}
这种肯定没法实现
假如实现下面这种倒是还可以
default.aspx?id=1 变成default-1.aspx
default.aspx?id=1&type =2 变成 default-1-2.aspx?
帮你顶 没人高手那分么?
我明白了,就是带参数的网页运行之后自动去掉啊,这个还不简单,在form_load事件里面判断有没有这个参数,如果有的话,就重新运行这个页面,当然是不带参数的了
在http.conf文件里面写重写规则
比如:RewriteRule ^(.*)/$ $1/Default.aspx [NC]
上面的规则分四部分 第一部分是关键字不可以改,第二部分是 访问规则,支持正则
第三部分是原始页面地址,支持正则,第四部分是指令,上面的表示不区分大小写,还有很多去网上查下就有了。
汗,这不是重写的问题吧?可以考虑把参数保存在Session里面,在default.aspx页面判断是Session里否有参数,有参数做相应的处理