2011-10-19 19 views
3

我有一些外部链接进入我的网站,误添加了一段时间。 (所以,我无法修复它们)。由于入站链接总是很好,我想将这些链接重定向到合法页面。我已经在iis.5的urlrewrite模块中尝试了一些规则,而且似乎没有任何东西可以捕获这个URL。iis在url结尾处用点改写url

我在这里看到了关于asp.net url的其他问题,最后是句号,但我试图在IIS重写模块级别捕获这个问题。任何关于使这项工作的指针?

回答

0

如果您有一组固定的入站链接不正确,您可以专注于重定向URL的主要部分,而不是点。

例如,使用此URL: http://www.example.com/index.html

让您的IIS重写查找匹配“^ index.html。*”的URL并重定向到您需要的页面。这应该赶上URL和无点。

+0

很确定我已经试过了,我会再试一次。 –

1

这是一个很古老的,但因为我是最近面临着类似的问题,我已经决定要发布我的发现......

我认为运行之前,URL重写模块模块之一终止,与一个例外,阻止请求继续进行url重写(我怀疑有些安全检查)。因此,用url-rewrite解决你的问题是不可能的。

一种可能的解决方法是重定向以'。'结尾的请求。在Global.asax中非常早期的阶段,就像这里:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e) 
{ 
    if (Context.Request.RawUrl.EndsWith(".aspx.")) 
    { 
     //permanent redirect and end current request... 
     Context.Response.RedirectPermanent(Context.Request.RawUrl.TrimEnd('.'), true); 
    } 
} 

可能从最佳答案,但至少它得到完成任务远;)

+0

我无权直接修改此资源。这应该在ASP.NET 2.0运行时中工作吗?我有一堆旧的Sharepoint实例,我试图解决这个问题。 –

0

我用了一个解决方案,在删除所有小圆点在web.config级别:

<rule name="RemoveTrailingDots" stopProcessing="false"> 
    <match url="^(.*[^.])\.+$" /> 
    <action type="Rewrite" url="{R:1}" /> 
</rule> 

这个规则只是重写请求URL内部在我的重写规则开始,允许请求通过正常规则处理,而不是被抓上游

如果你没有更多的规则可以申请,只是想在最后重新定向任何有点的东西,只需将动作类型改为Redirect(区分大小写)