2011-11-18 86 views
0

我想通过在IIS上使用入站规则将URL重写到另一个URL。我想要做的是基本上所有像localhost/Membership/Login这样的请求将是localhost/handlers/mapper.ashx?url=Membership/Login。我所做的是创造一个模式类似下面在IIS7上的Url重写

(Membership\/)(.+) 

和重写URL是

http://localhost/handlers/mapper.ashx?url={R:0} 

其实这种方式并没有给我什么,我想要的解决方案。它继续工作,因为正常的请求不去mapper.ashx。

可能是什么问题?什么是做这样的事情的正确方法?

由于提前,

回答

2

达拉斯已经指出你问比你自己的解决方案提出什么别的东西。但我会给你两种选择。首先,如果你只需要在URL的login一部分作为methodname参数为您处理,您可以使用以下重写规则:

<rule name="Rewrite to handler" stopProcessing="true"> 
    <match url="^Membership/(.+)" /> 
    <action type="Rewrite" url="/handlers/mapper.ashx?methodname={UrlEncode:{R:1}}" appendQueryString="false" /> 
</rule> 

如果您需要在url参数的完整URL为自己的解决方案建议你可以使用下面的重写规则:

<rule name="Rewrite to handler" stopProcessing="true"> 
    <match url="^Membership/(.+)" /> 
    <action type="Rewrite" url="/handlers/mapper.ashx?url={UrlEncode:{R:0}}" appendQueryString="false" /> 
</rule> 
0

这并不能解释为什么你的映射被跳过的,但你的例子和实际执行情况是不同的。你说你想映射到

localhost/handlers/mapper.ashx? 方法名 =登录

,但你的重写URL的例子是

http://localhost/handlers/mapper.ashx网址 = {R:0}

你必须在URL重写你的网址,而不是METHODNAME

+0

我在这个问题上写了这个错误。我修好了它 –