我用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>
如前所述,此配置在我的旧服务器上运行良好。这是我在新服务器上所做的:
有趣的是,如果我将action type =“Rewrite”更改为action type =“Redirect”,那么它可以工作,但我需要重写而不是重定向。两台服务器上的Wwwroot结构相同。
这让我发疯了。有什么想法吗?
答案 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" />
当我添加这些行时,它开始工作。魔法。我想知道为什么......