此挑战与 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>