2011-08-18 109 views
0

这是我的规则在web.config中设置:URL重写问题

<rule name="RedirectPopups" stopProcessing="true"> 
       <match url="^webforms/visitor/popup/*" /> 
       <conditions> 
       <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
       <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" /> 
       </conditions> 
       <action type="Redirect" url="jwelery/INEEDTHEPAGEVARIABLEHERE/{C:1}/{C:2}" appendQueryString="false" redirectType="Permanent" /> 
      </rule> 

基本上我有我的web表单的弹出窗口\访问者\弹出。我想写一个规则,当在这个弹出目录中请求任何页面时。它被重定向到一些自定义网址。

例如,

如果用户请求webforms/visitor/popup/HelloWorld.aspx?a=1

他应该被重定向到jwelery/HelloWorld/a/1

我只是需要什么,我应该在重定向行动“INEEDTHEPAGEVARIABLEHERE”写的解决方案。有什么特殊的变量可以使用吗?我使用的IIS7

感谢。

回答

2

你为什么不使用

<match url="^webforms/visitor/popup/([a-zA-Z0-9]+).aspx\?([a-zA-Z0-9]+)=([a-zA-Z0-9]+)$" /> 
<action type="Rewrite" url="jwelery/{R:1}/{R:2}/{R:3}" /> 

+0

哇,这很好地工作!谢谢。但是,你能告诉我是什么样的区别{R:1}和{C:1},究竟是什么人?任何链接或者如果你能解释的话我也会很感激。 – TCM

+0

{R:N}是反向引用,以排除模式,{C:N}为调节模式。您可以使用{C:1}正确回复您的QueryString模式。一个很好的概述可以在这里找到:http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/ – Olaf

+0

谢谢奥拉夫。你已经清除了几个月来我所怀疑的一个疑问。 – TCM