使用重写添加“假”根文件夹

时间:2012-12-19 18:13:47

标签: iis url-rewriting rewrite iis-modules

我不知道该去哪儿。我有重写删除文件扩展名等,但我似乎无法找到如何做的是添加一个“假的”根目录到该网站。例如,如果该网站是www.foo.com/index.htm,我想重写URL以显示www.foo.com/root/index.htm。我可以使用IIS重写模块或mod重写我只是不确定如何去做(或者如果它甚至可能)并且我的google-fu失败了我。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望请求带有root前缀。在这种情况下,这次重写将会这样做:

<rule name="StripRoot" stopProcessing="true">
    <match url="root/(.*)" />
    <action type="Rewrite" url="/{R:1}" />
</rule>

要修改提供给客户端出站规则的html是必需的:

<outboundRules>
    <rule name="FakeRoot" preCondition="IsHtml">
        <match filterByTags="A, Area, Base, Form, Frame, IFrame, Img, Input, Link, Script" pattern="http://www\.foo\.com/(.*)" />
        <action type="Rewrite" value="http://www.foo.com/root/{R:1}" />
    </rule>
    <preConditions>
        <preCondition name="IsHtml">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
        </preCondition>
    </preConditions>
</outboundRules>

它假定您在标记属性中具有完全限定的URL,如果使用相对链接,则需要更复杂的重写。