1

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

主域 URL

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

重写主域 URL

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)

二级域名 URL

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

重写二级域 URL

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>
4

0 回答 0