IIS7重写为REST无法正常工作

时间:2009-11-18 02:23:28

标签: iis url rest rewrite

我有一个REST服务,我正在尝试删除.svc - 一个常见的任务/问题。

服务器上的应用程序位于默认网站下的虚拟目录中(不确定这是否重要)

我已经安装了IIS重写模块,并尝试为此创建重写规则。

http://blah.me.com/here/thingys/get?id=1111

重写为:

http://blah.me.com/service.svc/thingys/get?id=1111

在我的web.conf中创建了以下内容:

<rewrite>
        <rules>
            <rule name="GEAPI /here/ to /service.svc/">
                <match url="^(.*?)/here/(.*)$" />
                <action type="Rewrite" url="{R:1}/service.svc/{R:2}" />
            </rule>
        </rules>
    </rewrite>

在GUI中,正则表达式可以正确测试。

然而 - 当我在服务器上的浏览器中运行它时,它会出现以下404错误:

 错误代码0x80070002
 请求的网址http://blah.me.com:80/here/thingys/get?id=1111
 物理路径C:\ MyApp \ here \ thingys \ get


C:\ Myapp是IIS中虚拟目录指向的正确物理目录。

这里有什么我想念的吗?我尝试在默认网站和应用程序下创建此规则,分别和一起。

非常感谢

P

1 个答案:

答案 0 :(得分:0)

你可以用这个:

<rewrite>
    <rules>
        <rule name="GEAPI /here/ to /service.svc/">
            <match url="^(.*)here(/.+)" />
            <action type="Rewrite" url="{R:1}service.svc{R:2}" />
        </rule>
    </rules>
</rewrite>

IIS只会为您提供http://blah.me.com/

之后的URI部分