URL重写 - 多域 - 删除主域中路径中的文件夹

时间:2015-04-22 19:11:37

标签: url rewriting

此挑战与URL重写有关,即根据需要使用具有虚构文件夹的主域和尽可能多的辅助域(没有虚构文件夹)。我们的想法是,该网站将拥有任何人都可以使用的默认域,但也允许用户使用自己的域。两者都需要在最后删除扩展名。我将概述它应该如何工作。除了一件事,我几乎所有的东西都在工作,我希望有人可以帮助或解决问题。这是一个使用IIS的VS 2012应用程序。

PRIMARY DOMAIN URLS

www.primarydomain.com/anyfictitiousname/page1 
www.primarydomain.com/anyfictitiousname2/page2 
www.primarydomain.com/anyfictitiousname3/somepath/page3 

REWRITTEN PRIMARY DOMAIN URLS

www.primarydomain.com/page1.aspx (or better yet www.primarydomain.com/page1.aspx?i=anyfictitiousname)
www.primarydomain.com/page2.aspx (or better yet www.primarydomain.com/page2.aspx?i=anyfictitiousname2)
www.primarydomain.com/somepath/page3.aspx (or better yet www.primarydomain.com/somepath/page3.aspx?i=anyfictitiousname3)

第二个域名网址

www.secondarydomain1.com/page1 
www.secondarydomain2.com/page2
www.secondarydomain3.com/somepath/page3

重写次要域名网址

www.secondarydomain1.com/page1.aspx 
www.secondarydomain2.com/page2.aspx 
www.secondarydomain3.com/somepath/page3.aspx 

以上所有内容实际上都与我当前的重写代码(我在下面列出)一起使用,除非使用主域而不包括URL末尾的文件,它就会崩溃。基本上,如果我将URL“www.primarydomain.com/personname”分配给用户,我希望能够转到该地址加载默认页面而不必键入“www。 primarydomain.com/personname/default“如果这是有道理的。最终发生的事情如下:

www.primarydomain.com/personname => www.primarydomain.com/personname.aspx
www.primarydomain.com/personname/ => www.primarydomain.com/personname/.aspx 

在这种情况下我想要发生的事情如下:

www.primarydomain.com/personname => www.primarydomain.com/default.aspx (or better yet www.primarydomain.com/default.aspx?i=personname)
www.primarydomain.com/personname/ => www.primarydomain.com/default.aspx (or better yet www.primarydomain.com/default.aspx?i=personname)

我是URL重写的新手,所以我不确定正确的方法,但主要是在第一个规则执行后或作为第一个规则的一部分,如果{R:2}是什么或“/ “,我想将其重写为”default.aspx“。即使执行了重定向,其中“default.aspx”被添加到URL,也没关系,但我不想让最终用户在输入URL时最后输入文件路径浏览器。这是我目前的重写代码。非常感谢任何帮助!

<rewrite>
      <rules>
        <rules>
          <rule name="Handle Primary URLs" stopProcessing="true">
            <match url="^([_0-9a-z-]+)/(.*)" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll">
              <add input="{HTTP_HOST}" pattern="^(mydomain.com|www.mydomain.com)$" />
              <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            </conditions>
            <action type="Rewrite" url="{R:2}.aspx?q={R:1}" appendQueryString="true" />
          </rule>
          <rule name="remove aspx">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="{R:1}.aspx" />
          </rule>
        </rules>
    </rules>
</rewrite>

0 个答案:

没有答案