我正在使用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.txt
和sitemap.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>
答案 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";
}