Asp.net mvc 5 基于ASP.NET MVC中查询字符串的一部分返回410错误

Asp.net mvc 5 基于ASP.NET MVC中查询字符串的一部分返回410错误,asp.net-mvc-5,query-string,iis-8,http-status-code-410,Asp.net Mvc 5,Query String,Iis 8,Http Status Code 410,正在寻找一种方法,我们可以在ASP.NET MVC-5 IIS-8站点中使用该方法,根据查询字符串中包含的短语列表返回410错误响应(GOE) 为什么??我们每天都会收到数百个来自知名机器人(如谷歌、必应、雅虎)的垃圾点击,因为它们的页面名称可笑,而我们的网站上从未有过这些页面。我在想,对于这些页面中的大多数,我可以测试给定的关键短语是否存在,如果存在,则返回410。我想返回410,告诉机器人,他们可以永久删除他们的清单,从而提供一个逐步改善的搜索引擎优化环境 下面是我们收到的几个URL示例,其

正在寻找一种方法,我们可以在ASP.NET MVC-5 IIS-8站点中使用该方法,根据查询字符串中包含的短语列表返回410错误响应(GOE)

为什么??我们每天都会收到数百个来自知名机器人(如谷歌、必应、雅虎)的垃圾点击,因为它们的页面名称可笑,而我们的网站上从未有过这些页面。我在想,对于这些页面中的大多数,我可以测试给定的关键短语是否存在,如果存在,则返回410。我想返回410,告诉机器人,他们可以永久删除他们的清单,从而提供一个逐步改善的搜索引擎优化环境

下面是我们收到的几个URL示例,其中的关键短语我将用粗体进行测试

apple touch-icon-precomposed.png

zdjqhhmtkatt.html

我知道在其他编程环境中使用.htaccess可以很好地做到这一点,所以我希望ASP.MVC也有一个优雅的解决方案。

您可以使用模块来实现这一点。web.config中的规则应如下所示:

<rewrite>
    <rules>
        <rule name="410response" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny">
                <add input="{REQUEST_URI}" pattern="apple-touch" />
                <add input="{REQUEST_URI}" pattern="zdjqhhmtkatt" />
            </conditions>
            <action type="CustomResponse" statusCode="410" statusReason="System unavailable" statusDescription="Gone. The requested resource is no longer available." />
        </rule>
    </rules>
</rewrite>