iis url rewrite可以使用一台旧服务器,但不能使用新服务器

时间:2013-12-17 15:06:05

标签: iis url-rewriting

我用iis7 Win server 2008 RC2在我的服务器上使用url重写已有好几年了,效果很好。现在,我尝试将整个配置移动到新的(虚拟)服务器(相同的操作系统),但它不起作用。重写的目的是避免URL中的端口号(“:”)。这是我的web.config位于子文件夹/ 834中,以便用户可以输入mysite / 834而不是mysite:834。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="tp_redirect" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{URL}" pattern=".+(834)/(.*)" />
                    </conditions>
                    <action type="Rewrite" url="http://teamplay.vps.mibosoft.se:{C:1}/{C:2}" logRewrittenUrl="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

如前所述,此配置在我的旧服务器上运行良好。这是我在新服务器上所做的:

  1. 安装了url rewrite模块(也尝试重新安装)。
  2. 已安装ARR(我需要吗?)。
  3. 有趣的是,如果我将action type =“Rewrite”更改为action type =“Redirect”,那么它可以工作,但我需要重写而不是重定向。两台服务器上的Wwwroot结构相同。

    这让我发疯了。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决!我比较了服务器之间的文件%windir%\ System32 \ inetsrv \ config \ applicationHost.config,并看到下面的“重写”部分丢失,并且行代理启用=“true”。

        <validation />
        <rewrite>
            <globalRules>
                <clear />
            </globalRules>
            <allowedServerVariables>
            </allowedServerVariables>
            <outboundRules>
            </outboundRules>
            <rewriteMaps>
            </rewriteMaps>
        </rewrite>
        <diskCache>
            <compression>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/x-javascript" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
            </compression>
        </diskCache>
        <proxy enabled="true" />

当我添加这些行时,它开始工作。魔法。我想知道为什么......