Sangil's blog

https://github.com/ChoiSangIl Admin

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가지 방법을 알아 봤습니다~

#robots.txt #robots.txt 생성 #spring boot robots.txt #컨트롤러 robots.txt
REPLY