当前位置:编程学习 > C#/ASP.NET >>

有关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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,