2011-10-24 253 views
1

如何将问号(?)后的所有内容重写为一个参数?IIS 7 URL重写

例如,我有一个网址为:第一个问号,我们有另一个在查询字符串后http://www.example.com?abcdefg/test/module?wiating4request

通知。我基本上需要张贴到该网址,我不能修改网址,所以我需要做的是提供什么。

我看到了类似的东西在这里:How can I use mod_rewrite to remove everything after the ? (question mark) in a URL?

请记住,这是IIS 7

任何想法?

回答

1

如果您只想匹配URL,并且只有一个问号太多,就可以使用重写规则来做到这一点,就像您的示例一样。如果你想匹配太多的问号,我认为你需要为链接的文章中详细恢复到custom rewrite provider无限数量的

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Clean extra question mark from query string" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^(.+?)(\?(.+))*$" /> 
        </conditions> 
        <action type="Rewrite" url="/{URL}?{C:1}&amp;{C:3}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

:然后,您可以使用此规则。您可能最终得到如下结果:

<rule name="Clean extra question mark from query string" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{QUERY_STRING}" pattern="^$" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="/{URL}?{ReplaceProvider:{QUERY_STRING}}" appendQueryString="false" /> 
</rule>