2011-10-22 206 views
0

我有一个入站链接,其中有很多垃圾。我的网站只是加载主页并忽略查询字符串,但我想检测查询字符串并重定向到一个干净的家庭网址。IIS 7.5的URL重写帮助 - 奇怪的查询字符串

的URL看起来是这样的:

http://www.mysite.url/?c%253E 'dmjdlgsbve%253E2'lfzxpset%253E'sbol%253E2'f%253E'vsm%253Eiuuq%253B00xxx%252Fopdmjdlz%252Fdpn0'gffe%253Eopqbz'qsjdf%253E'太贝%253Ebd7g8g73cc3c7d%253Af5925f3efd2f62dcd'zbsht%253Exxx%252Fopdmjdlz%252Fdpn

我似乎无法作出这样的捕获这个查询字符串的规则,让我重定向到http://www.mysite.url。有任何想法吗?

回答

1

这很容易做到。首先,您必须确保您位于主页上(即空请求URL),然后在条件中检查非空查询字符串。如果两者都是这种情况,则永久重定向回到同一个URL(=没有查询字符串的URI)。

像:

<rule name="Remove query string" stopProcessing="true"> 
    <match url="^$" /> 
    <conditions> 
     <add input="{QUERY_STRING}" pattern="^$" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="{URL}" appendQueryString="false" /> 
</rule> 

如果你愿意,你可以添加一个更具体的条件,让它只匹配这个特定的入站链接。

更新: 我怀疑您的网址中存在一些双重网址编码。例如,%253E很可能是%3E,因为%25是编码百分比符号的URL。而%3E是>字符的URL编码。因此,我认为你将有更多的运气与此:

<rule name="Remove query string" stopProcessing="true"> 
    <match url="^$" /> 
    <conditions> 
     <add input="{QUERY_STRING}" pattern="^c%3E'dmjdlgsbve%3E2'lfzxpset%3E'sbol%3E2'f%3E'vsm%3Eiuuq;00xxx/opdmjdlz/dpn0'gffe%3Eopqbz'qsjdf%3E'tbq%3Ebd7g8g73cc3c7d:f5925f3efd2f62dcd'zbsht%3Exxx/opdmjdlz/dpn$" /> 
    </conditions> 
    <action type="Redirect" url="{URL}" appendQueryString="false" /> 
</rule> 
+0

我想,虽然检测只是这个特定的查询字符串,但它似乎像一些在里面的人物都扔过滤网...喜欢的百分比标志和其他一些。我想保留其他querystrings完好无损。 –