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

URL重写-多域-删除主域上路径中的文件夹,url,rewriting,Url,Rewriting,这个挑战与URL重写有关,即使用带有虚拟文件夹的主域和需要的尽可能多的辅助域(没有虚拟文件夹)。其想法是,该网站将有一个默认域,任何人都可以使用,但也将允许用户使用自己的域。两者都需要在末尾删除扩展。我将概述它应该如何工作。除了一件事之外,我几乎所有的事情都在工作,我希望有人能帮助我,或者给我一些启示。这是一个使用IIS的VS 2012应用程序 主域URL www.primarydomain.com/anyfictitiousname/page1 www.primarydomain.com/a

这个挑战与URL重写有关,即使用带有虚拟文件夹的主域和需要的尽可能多的辅助域(没有虚拟文件夹)。其想法是,该网站将有一个默认域,任何人都可以使用,但也将允许用户使用自己的域。两者都需要在末尾删除扩展。我将概述它应该如何工作。除了一件事之外,我几乎所有的事情都在工作,我希望有人能帮助我,或者给我一些启示。这是一个使用IIS的VS 2012应用程序

主域URL

www.primarydomain.com/anyfictitiousname/page1 
www.primarydomain.com/anyfictitiousname2/page2 
www.primarydomain.com/anyfictitiousname3/somepath/page3 
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

www.primarydomain.com/anyfictitiousname/page1 
www.primarydomain.com/anyfictitiousname2/page2 
www.primarydomain.com/anyfictitiousname3/somepath/page3 
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

www.primarydomain.com/anyfictitiousname/page1 
www.primarydomain.com/anyfictitiousname2/page2 
www.primarydomain.com/anyfictitiousname3/somepath/page3 
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

www.primarydomain.com/anyfictitiousname/page1 
www.primarydomain.com/anyfictitiousname2/page2 
www.primarydomain.com/anyfictitiousname3/somepath/page3 
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}为nothing或“/”,我想将其重写为“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>