SPRING BOOT robots.txt 만드는 2가지 방법 DEV / WEB
2018-09-16 posted by sang12
이번에는 SPRING BOOT를 이용하여 STS에서 robots.txt를 만드는 2가지 방법을 알아보겠습니다. 혹시 robots.txt가 무엇인지 궁금하신 분들은 http://sang12.co.kr/5를 참고하시면 되겠습니다 ^^.
robots.txt는 도메인 최상위에 존재해야 하는데요. sang12.co.kr/robots.txt 형태로 존재해야합니다. 그렇다면 SPRING BOOT에서 가장 간단하게 구현하는 첫번째 방법을 알아 보겠습니다. 일단 robots.txt파일을 메모장을 이용하여 만들어 줍니다.
-robots.txt
User-agent: *
Allow: /
그리고 해당 파일을 spring boot에서 기본적으로 static한 리소스 파일을 저장 할 수 있는 공간인 src/main/resources/static 파일 아래에 넣어줍니다.
그리고 http://localhost:8080/robots.txt로 들어가면 robots.txt의 내용을 확인 할 수 있습니다. 간단하죠? ㅎㅎ 하지만 저 같은 경우는 블로그 구조가 sang12.co.kr/16 이면 16번째 게시글을 볼 수 있게 설정 되어 있는데요 이때 @PathVariable을 이용해서 게시물 아이디를 가져오는데 위와같은 방법으로 sang12.co.kr/robots.txt로 접근하게 되면, 내부리소스로 접근하기 전에 컨트롤러에서 해당 변수를 게시물 아이디로 판단해서 형이 맞지 않다는 에러가 나오게됩니다. 아래는 컨트롤러 구조입니다.
/* sang12.co.kr/{articleId} */
@RequestMapping("/{articleId}")
public ModelAndView getArticle(@PathVariable int articleId){
Map data = commonService.getArticle(articleId);
return new ModelAndView("front/main", "mainData", data);
}
그래서 저는 다른 방법을 찾아야 했는데요~ 그래서 찾은 두번째 방법입니다
자 일단 첫번재 방법에서 static리로스 하위에 넣어준 robots.txt파일을 지워 줍니다. 그리고 아래처럼 컨트롤러를 추가해주었습니다.
/* sang12.co.kr/robots.txt */
@RequestMapping(value = "/robots.txt")
@ResponseBody
public String robots() {
return "User-agent: *\nAllow: /md\n";
}
자, 그러면 sang12.co.kr/robots.txt로 접근하면 해당 컨트롤러가 받아서 string 값을 반환해줍니다. 또한 컨트롤러에서 저렇게 string을 반환해주는 방법외에도, 리소스 파일을 찾아서 해당 파일내용을 리턴해주는 방법도 있더라구요 ^^. 이렇게 spring boot를이용하여 sts에서 robots.txt를 만드는 2가지 방법을 알아 봤습니다~