gpt4 book ai didi

java - 我如何在 Spring 框架中提供 robots.txt?

转载 作者:行者123 更新时间:2023-11-30 10:16:03 24 4
gpt4 key购买 nike

我看到了this但它已经过时了。我尝试了以下方法:

创建了 src/main/resources/static/robots.txt

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("/robots.txt").addResourceLocations("classpath:/static/robots.txt");
// registry.addResourceHandler("/robots.txt").addResourceLocations("/static/robots.txt");
// registry.addResourceHandler("/robots.txt").addResourceLocations("/static/");
registry.addResourceHandler("/robots.txt").addResourceLocations("classpath:/static/");

每次,

$ curl -i http://localhost:8080/robots.txt
HTTP/1.1 302
Set-Cookie: JSESSIONID=D1E5304FE8E693115A1FFB0F76786ABD; Path=/; HttpOnly
Location: http://localhost:8080/pageNotFound
Content-Length: 0

但是静态 CSS 是有效的。

$ curl -iq http://localhost:8080/css/style.css | head
HTTP/1.1 200

每次更改代码时,我都会关闭服务器并运行 mvn spring-boot:run

当我启动服务器时它说:

2018-05-03 17:22:18.639  INFO 25148 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/robots.txt] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
...
2018-05-03 17:22:39.139 INFO 25148 --- [nio-8080-exec-1] c.s.shorturl.apis.ShortUrlApiController : Method name: doUrlRequest() request http method is GET

它正在执行它。

@Controller
@Scope("session")
@ApiIgnore
public class ProjectShortUrlController implements ErrorController{
@RequestMapping(value = "/*")
public void doUrlRequest(HttpServletRequest request, HttpServletResponse response) {
CustomLogger.info(TAG, "rediection: ", "Method name: doUrlRequest() request http method is "+request.getMethod());

文档:https://docs.spring.io/spring/docs/5.1.0.BUILD-SNAPSHOT/spring-framework-reference/web.html#mvc-config-static-resources

Spring 4.3.10


我发现如果我这样做

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/robots.txt").addResourceLocations("/static/robots.txt");

然后 robots.txt 工作

$ curl -i http://localhost:8080/robots.txt
HTTP/1.1 200
Content-Type: text/plain
Content-Length: 28

User-agent: *
Disallow: /

但是所有其他 URL 开始给出“Whitelabel Error Page”!

最佳答案

我放弃了 WebMvcConfigurerAdapter。我认为 Controller 请求优先于资源处理程序。我只是在 Controller 中使用它。

@RequestMapping(value = "/robots.txt")
public void robots(HttpServletRequest request, HttpServletResponse response) {
try {
response.getWriter().write("User-agent: *\nDisallow: /\n");
} catch (IOException e) {
CustomLogger.info(TAG, "robots", "robots(): "+e.getMessage());
}
}

我可能遇到了麻烦,因为有一个 @RequestMapping(value = "/*") 路径。

关于java - 我如何在 Spring 框架中提供 robots.txt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com