在tomcat 7中放置robots.txt的位置?

时间:2012-12-15 10:09:36

标签: java apache tomcat sitemap robots.txt

我正在使用Tomcat 7来托管我的应用程序。 我在tomcat-home \ conf \ Catalina \ localhost

下使用了ROOT.xml文件
<Context 
  docBase="C:\Program Files\Apache Software Foundation\Tomcat 7.0\mywebapp\MyApplication" 
  path="" 
  reloadable="true" 
/>

这是在根上下文中加载我的webapp。

但现在我对于放置robots.txtsitemap.xml文件的位置感到困惑。当我放入C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ mywebapp \ MyApplication时,它没有出现。

我也尝试将其放在C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT内,以防万一。但没有任何作用。我仍然没有找到404。 任何人都可以指导。

P.S。我的Web应用程序运行正常。只是我的robots.txt文件无法访问。

修改

我的web.xml文件:

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy
        </filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3 个答案:

答案 0 :(得分:4)

只需将robots.txt放入Tomcat_DIR/webapps/ROOT/

即可

答案 1 :(得分:3)

它应该在你的上下文目录中

mywebapp\MyApplication

您将拥有web-inf目录,index.html等。

更新:

根据我们的讨论,所有URL都由Spring MVC DelegatingFilterProxy处理,因此您需要以某种方式从此过滤器中排除* .txt,可以通过扩展DelegatingFilterProxy并在web.xml中配置该过滤器

解决方案:我可以通过Spring MVC中的这个hack来提供静态内容:

<mvc:resources mapping="/robots.txt" location="/robots.txt" order="0"/>

让我头疼不已。 :)为其他任何人写作,以便从中受益。

答案 2 :(得分:0)

我遇到了同样的问题:我没有计算我放置robots.txt的位置,也没有配置<mvc:resources mapping="/robots.txt" location="/robots.txt" order="0"/>每个robots.txt请求都返回404状态。

这里的问题是我在客户端使用Spring MVC和Backbone.js MVC,它有路由。所以我无法调整<url-pattern></url-pattern>来为两个MVC服务。

我在这里找到的唯一快速而丑陋的解决方案是将请求作为Spring MVC中的请求处理到/robots.txt

@RequestMapping(value = "/robots.txt", produces = {"text/plain"}, method = RequestMethod.GET)
@ResponseBody
public String getRobotsTxt() {
    return "User-agent: *" + 
   "\n" + "Allow: /js/views/*.js" + 
   "\n" + "Allow: /js/*.js" + 
   "\n" + "Allow: /css/*.css" + 
   "\n" + "Allow: /css/*.png" + 
   "\n" + "Disallow: /cgi-bin" + 
   "\n" + "Sitemap: http://blabla/sitemap.xml";
}