zoukankan      html  css  js  c++  java
  • asp.net重写目录

    asp.net对于URL重写,支持无后缀url请求

    标签:
    通过简单对iis配置,再利用urlwriter就可以完美解决url重写的问题

    可以将http://abc.domain.com/blog

    转向到http://www.domain.com/xxx.aspx?username=abc

    当然首先要将主机的泛域名支持打开。

    做法是

    A。打开IIS,右击站点(虚拟目录)-》属性-》主目录-》配置-》插入-》C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,不确认文件存在-》确定

    B。修改webconfig:

      <RewriterConfig>
        <Rules>
          <RewriterRule>
            <LookFor>http://localhost/(blog)</LookFor>
            <SendTo>~/sdfsdf.asxp?tag=$1</SendTo>
          </RewriterRule>
       </Rules>
    </RewriterConfig>

    C。修改UrlRewriter
    从微软下载源码,

    1.BaseModuleRewriter.cs

    protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)
            
    {
                HttpApplication app 
    = (HttpApplication) sender;
                Rewrite(app.Request.Path, app);
            }

    改为

    protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)
            
    {
                HttpApplication app 
    = (HttpApplication) sender;
                Rewrite(app.Request.Url.AbsoluteUri, app);
            }


    就是将  app.Request.Path 替换成了  app.Request.Url.AbsoluteUri

    2.ModuleRewriter.cs

    for(int i = 0; i < rules.Count; i++)
                
    {
                    
    // get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)
                    string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";

                    
    // Create a regex (note that IgnoreCase is set)
                    Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);

                    
    // See if a match is found
                    if (re.IsMatch(requestedPath))
                    
    {
                        
    // match found - do any replacement needed
                        string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo));

                        
    // log rewriting information to the Trace object
                        app.Context.Trace.Write("ModuleRewriter""Rewriting URL to " + sendToUrl);

                        
    // Rewrite the URL
                        RewriterUtils.RewriteUrl(app.Context, sendToUrl);
                        
    break;        // exit the for loop
                    }
                }

    改为

    for(int i = 0; i < rules.Count; i++)
                
    {
                    
    // get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)
                    string lookFor = "^" + rules[i].LookFor + "$";

                    
    // Create a regex (note that IgnoreCase is set)
                    Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);

                    
    // See if a match is found
                    if (re.IsMatch(requestedPath))
                    
    {
                        
    // match found - do any replacement needed
                        string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo));

                        
    // log rewriting information to the Trace object
                        app.Context.Trace.Write("ModuleRewriter""Rewriting URL to " + sendToUrl);

                        
    // Rewrite the URL
                        RewriterUtils.RewriteUrl(app.Context, sendToUrl);
                        
    break;        // exit the for loop
                    }
                }



    string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";

    改成了

    string lookFor = "^" + rules[i].LookFor + "$";


    OK。 
  • 相关阅读:
    [bzoj4408][Fjoi2016]神秘数
    BZOJ1102: [POI2007]山峰和山谷Grz
    BZOJ1098: [POI2007]办公楼biu
    BZOJ1097: [POI2007]旅游景点atr
    GDOI2018 新的征程
    BZOJ2084: [Poi2010]Antisymmetry
    回文树详解
    Codeforces739E. Gosha is hunting
    一道题17
    LOJ#6002. 「网络流 24 题」最小路径覆盖
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835629.html
Copyright © 2011-2022 走看看