在ASP.NET MVC 3中路由静态文件,如robots.txt

Mer*_*ijn 14 asp.net-mvc asp.net-mvc-routing

我想将以下链接"http://mywebsite.com/robots.txt"链接到静态文件〜/ Content/robots.txt.

我怎样才能做到这一点?

谢谢,Merijn

Jam*_*ruk 11

添加这样的路线应该可以解决问题.这样就可以提供像robots.txt这样的静态.txt文件.

routes.IgnoreRoute("{resource}.txt"); 
Run Code Online (Sandbox Code Playgroud)

  • 这项技术对我很有用.(我把它放在RegisterRoutes()方法的RouteConfig.cs文件的顶部.) (3认同)

yez*_*ior 7

您可以安装Url Rewrite模块:http: //www.iis.net/downloads/microsoft/url-rewrite
请记住,此模块适用于IIS而不适用于Cassini/IIS Express.

并将以下规则添加到web.config to section<system.webServer>

<rewrite>
    <rules>
        <rule name="robots" stopProcessing="true">
            <match url="robots.txt" />
            <action type="Rewrite" url="/Content/robots.txt" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

我在新的MVC 3 .NET项目上检查了它,并使用相同的文件检测了两个url响应:mywebsite.com/robots.txt
mywebsite.com/Content/robots.txt


Ash*_*han 5

您可以设置磁盘文件的路由请求.默认情况下,路由系统会在评估应用程序的路由之前检查URL是否与磁盘文件匹配.如果匹配,则提供磁盘文件并且不使用路由.但是,这可以被尊重,因此通过设置to 的RouteExisitingFiles属性RouteCollection来检查磁盘文件之前的路径true.将此语句放在RegisterRoutes方法的顶部附近 - 这似乎是mvc apps的惯例.然后定义磁盘文件的路由.请注意,在执行此操作时,可能会出现一些不可预见的影响,因为riute可能会出现其他类型的URL.