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。 
  • 相关阅读:
    自定义Spark Partitioner提升es-hadoop Bulk效率
    golang channel本质——共享内存
    STM 软件事务内存——本质是为提高并发,通过事务来管理内存的读写访问以避免锁的使用
    elasticsearch 自定义_id
    JS弄ASP.NET(C#)在页GridView信息选择行
    pdf转换为word小工具,挺好
    Cocos2d-x场景功能描述的生命周期
    数据收集程序一般建筑(C++ ACE达到)
    IOS上传文件开发
    thinkphp达到UploadFile.class.php图片上传功能
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835629.html
Copyright © 2011-2022 走看看