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