How to know the original url after url rewrite?

前端 未结 2 1454
天涯浪人
天涯浪人 2021-01-05 03:15

I have url rewrite rules which redirect www.domain2.com to a subfolder under the root of a domain1.com (let\'s call this folder subproject). In my controller, I need to cons

相关标签:
2条回答
  • 2021-01-05 03:42

    You should be able to find it in Request.RawUrl.

    0 讨论(0)
  • 2021-01-05 03:54

    Here is a good way to get the current directory even when using rewrite.

    I needed this to cache some resources in localStorage for an offline web app. With asp.net mvc, the page parameters are written as subdirecties under a page which causes the relative paths to change. Therefore, I needed the absolute path as a key for the resource in the localStorage.

    Anyway, here it is:

            var applicationRoot = new System.Uri(Request.Url, Href("~"));
            var rawURl = Request.RawUrl;
            var rawUrlAbsolute = new System.Uri(serverRoot, rawURl);
            var relativeToCurrentPath = Href("SOMETHING_DOESNT_MATTER/../");
            var clientPathAbsolute = new System.Uri(rawUrlAbsolute, relativeToCurrentPath);
            var clientPathAbsoulteStr = clientPathAbsolute.AbsoluteUri;
    

    This took me many attempts to figure out. Here is an example using my website:

    The path without rewriter

        //  applicationRoot         = http://www.toldpro.com/
        //  rawURl                  = /Apps/GreekBible/App/A/B/C
        //  rawUrlAbsolute          = http://www.toldpro.com/Apps/GreekBible/App/A/B/C 
        //  relativeToCurrentPath   = ../../../
        //  clientPathAbsolute      = http://www.toldpro.com/Apps/GreekBible/
        //  clientPathAbsoulteStr   = http://www.toldpro.com/Apps/GreekBible/
    

    The path rewriten to a subdomain

        //  applicationRoot         = http://greekbible.toldpro.com/Apps/GreekBible/
        //  rawURl                  = /App/A/B/C
        //  rawUrlAbsolute          = http://greekbible.toldpro.com/App/A/B/C 
        //  relativeToCurrentPath   = ../../../Apps/GreekBible/
        //  clientPathAbsolute      = http://greekbible.toldpro.com/Apps/GreekBible/
        //  clientPathAbsoulteStr   = http://greekbible.toldpro.com/Apps/GreekBible/
    

    The rewrite rule:

    For more information about this, the following is the rewrite rule I used:

    // Rewrite: 
    // http://greekbible.toldpro.com/App/* (Client)
    // to
    // http://www.toldpro.com/Apps/GreekBible/App/* (Actual)
    
        <rule name="Subdomain rewriter" stopProcessing="true">
          <match url="App/(.*)" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^www\.toldpro\.com$" negate="true" />
            <add input="{HTTP_HOST}" pattern="^greekbible\.toldpro\.com$" />
          </conditions>
          <action type="Rewrite" url="/Apps/GreekBible{URL}" />
        </rule>
    
    0 讨论(0)
提交回复
热议问题