有关URL重写的问题
现在我在做一个博客,想做URL映射,让地址显示为http://localhost/blog/userName但我现在真实地址是这样的
http://localhost/blog/index.aspx?id=***
我要怎么做才能把 这个id号转换成用户名,然后在映射成我的要URL?userName在数据库中!
我查了资料,
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor> ~/Products/(\d+).html </LookFor>
<SendTo> ~/Products/Default.aspx?ID=$1 </SendTo>
</RewriterRule>
</Rules>
</RewriterConfig
但我不知道这个正则表达式怎么写? --------------------编程问答--------------------
比如:要显示的地址为:http://localhost/blog/uerName
<RewriterRule>
<LookFor> ~/blog/.*userName=(.*)</LookFor>
<SendTo> ~/blog/index.aspx?userName=$1 </SendTo>
</RewriterRule> --------------------编程问答-------------------- 用httphandle实现,查查有关资料吧 --------------------编程问答-------------------- 如果是转换成http://localhost/blog/id
就可以
换成用户名就不知道了
那要查数据库吧
感觉不太现实 --------------------编程问答-------------------- http://www.cnblogs.com/lgp/archive/2006/10/16/530426.html
不错,可以帮到你 --------------------编程问答-------------------- 用HttpMoudle加正则表达式应该就好了
web.config配置:
<system.web>
<httpModules>
<add name="ReflectModule" type="HelloWorldModule"/>
</httpModules>
</system.web>
代码:
public class ReflectModule:IHttpModule
{
void IHttpModule.Dispose()
{
}
void IHttpModule.Init(HttpApplication context)
{
context.BeginRequest+=new EventHandler(context_BeginRequest);
}
public void context_BeginRequest(object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string url = context.Request.RawUrl;
string pattern = ConfigurationManager.AppSettings["vtPath"];
pattern = @"~/blog/([\d]+)";
Regex rx = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = rx.Match(url);
if (match.Success)
{
string username = match.Groups[0].Value;
int id = GetID(username);
context.Server.Transfer("~/blog/index.aspx?id="+id);
//IHttpHandler hander = BuildManager.CreateInstanceFromVirtualPath ("~/blog/index.aspx?id="+id,typeof(Page)) as IHttpHandler;
// hander.ProcessRequest(context);
}
}
} --------------------编程问答-------------------- 本来准备将匹配项写到AppSettings中,不过好像得到的值会自动将\转为\\,所以就直接赋值了。
pattern = @"~/blog/([\w\d]+)"; //\w匹配字符,\d匹配数字
测试页面:
test.aspx
<a href="~/blog/tomatozq1983">地址映射</a>
--------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 顶... --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- id,转换成username?还要经过数据库的检索,这样不行吧
你直接传输username不可以吗? --------------------编程问答-------------------- 关注一下. --------------------编程问答-------------------- id!=username?
LZ直接取username不行吗
补充:.NET技术 , ASP.NET