차근차근/이것저것

robots.txt

예쁜꽃이피었으면 2022. 5. 3. 13:51

방법1. robots.txt생성

방법2. meta태그생성

방법3. 스프링컨트롤러에서 설정

 

방법1. robots.txt생성

 

https://blog.naver.com/rhcps00/140035945788

 

robots.txt 설정

일부 Naver 고객샌터 인용 로봇 배제 표준이란 말 그대로 웹 문서를 수집해 가는 로봇을 배제한다는 뜻입...

blog.naver.com

더보기

일부 Naver 고객샌터 인용

로봇 배제 표준이란 말 그대로 웹 문서를 수집해 가는 로봇을 배제한다는 뜻입니다.
로봇의 배제와 관련된 내용을 적어 놓은 robots.txt 파일을 사이트의 최상위 주소(서버 루트 디렉토리 예:www.naver.com/robots.txt)에 저장하면 됩니다. (robots.txt를 서브디렉토리에 저장할 경우에는 효력이 없다는 사실에 주의하세요.)
예를 들어, www.yourhost/~mypage 밑에 robots.txt가 있어도 이는 아무런 효력을 갖지 못합니다.
로봇은 오직 루트 디렉토리의 robots.txt만을 참조할 뿐입니다. 로봇의 접근을 어디까지 허용할 것이냐에 따라 robots.txt에 들어가는 내용은 달라집니다. (robot.txt가 아닌 복수형인 robots.txt 임에 주의해주세요.)

robots.txt 저장 방법 안내

1. 홈페이지 전체가 모든 검색엔진에 노출되는 것을 원하지 않을 때
코드: User-agent: *
Disallow: /  

2. 홈페이지 전체가 모든 검색엔진에 노출되기를 원할 때

코드: User-agent: *
Disallow: (Ex1과 비교했을 때 “/”가 빠져 있습니다. robots.txt를 작성하지 않으면 모두 검색허용으로 간주됩니다.)

3. 홈페이지 디렉토리의 일부만 검색엔진에 노출하고 싶을 때
코드: User-agent: *
Disallow: /my_photo/
Disallow: /my_diary/ (이렇게 작성하면 로봇은 my_photo, my_diary라는 폴더에 속한 웹문서에 접근할 수 없습니다.)

4. 홈페이지 전체가 검색되길 원하지만 특정 검색엔진을 거부하고 싶을 때
코드: User-agent: EvilRobot
Disallow: / 위의 예에서는 “EvilRobot”이라는 이름을 가진 로봇만을 배제하게 됩니다.
('네이버'에 대해서 막고 싶다면 NaverBot을 User-agent로 설정해주시면 됩니다. Naverbot은 네이버 로봇의 이름입니다.)

5. 홈페이지 전체가 검색되길 원하지만 특정 검색엔진에게만 노출되기를 원할 때
코드: User-agent: NaverBot
Disallow:
User-agent: *
Disallow: / (이 경우 NaverBot만이 웹문서를 수집해갈 수 있습니다.)

“robots.txt”를 작성하는 것과 유사한 방법으로 HTML문서의 (HEAD)와 (/HEAD)태그 사이에
(META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW")라는 메타태그를 추가하면 로봇은 웹 문서를 가져갈 수 없습니다.
이 방법은 다소 번거롭기는 하지만 문서 하나하나에 대해 정확하게 명시를 해주기 때문에
가장 확실하게 로봇의 접근을 막을 수 있는 방법입니다.
로봇 배제에 대한 보다 자세한 내용은 http://www.robotstxt.org 에서 확인할 수 있습니다.
robots.txt를 서버에 저장하고 로봇이 직접 방문하지 않는 경우라고 하더라도 본인의 홈페이지 중 일부 내용
혹은 링크 값이 NAVER 웹 문서 검색 결과에 나타나는 경우가 있을 수 있습니다.
이는 다른 웹 문서들이나 사이트들이 해당 웹 문서를 링크한 경우, 그 링크에 제시된 설명에 의해서 자동적으로 생성되는 것으로,
해당 웹 사이트의 robots.txt의 존재유무나 로봇의 동작과는 무관할 수 있습니다. --------------------------------------------------------------------
* User-agent : 수집하는 주체의 범위를 정합니다. *으로 설정할 경우 모든 봇의 접근이 격리됩니다. naver의 경우 봇 이름은 Naverbot입니다. 'User-agent : * '와 같은 꼴로 사용합니다.
* Allow : 뜻 그대로 허락할 디렉토리를 설정합니다.
* Disallow : 뜻 그대로 불허할 디렉토리를 설정합니다. Disallow: 뒤에 아무것도 표시하지 않을 경우에도, 모든 접근을 허락한다는 뜻이 되므로 유의하세요. 만약 모든 디렉토리의 접근을 막고 싶다면 'Disallow: /'와 같이 쓰면 됩니다.
다른 포탈은 모르겠지만 현 한국에서 가장 많이 데이터를 긁어가는 포탈은 네이버 입니다.
하지만 네이버에서도 로봇은 거의 다 막아 놓고 있습니다.
http://blog.naver.com/robots.txt
http://cafe.naver.com/robots.txt
http://kin.naver.com/robots.txt
http://news.naver.com/robots.txt
엄청나게 긁어가는 포탈들의 횡포와 자기 컨텐츠를 지키려는 사람들의 조정자가 될수 있는것이 robots.txt입니다.
문론 robots.txt로 다 막을 수는 없습니다. robots.txt를 무시하는 로봇도 많습니다. 하지만 대부분은 제어가 가능 할것입니다.

출처: https://thepowerofknowledge.tistory.com/entry/홈페이지-등록된-글-검색-안되게-하기-robottxt [정보 수집]


 

https://goldensmell.tistory.com/21

 

[spring] 검색엔진에 등록되기 위한 robots.txt 파일 적용하기

1. robots.txt 파일 생성 모든 검색엔진에 적용 되는 코드 입니다. (예외처리나 허용 되지 않도록 하는건 다음 포스팅에 추가하도록 하겠습니다.) 1 2 3 User-agent: * Allow: / cs 2. 프로젝트에 추가 스프

goldensmell.tistory.com

더보기

1. robots.txt 파일 생성

모든 검색엔진에 적용 되는 코드 입니다. (예외처리나 허용 되지 않도록 하는건 다음 포스팅에 추가하도록 하겠습니다.)

1
2
3
User-agent: *
 
Allow: /
cs

 

2. 프로젝트에 추가

스프링 프로젝트의 root 디렉토리에 파일을 추가 해준다.

 

3. resources mapping 작성된 context.xml 수정

1
2
3
<beans:bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    
<resources mapping="/robots.txt" location="/robots.txt" order="0"/>
cs



출처: https://goldensmell.tistory.com/21 [Golden's DEV-Log]


 

 

방법2. meta태그생성

https://hunit.tistory.com/312

 

검색로봇이 좋아하는 메타(Meta) 태그

저번글에서는 검색로봇이 홈페이지나 웹사이트에 방문할 수 있도록 루트(ROOT)폴더에 robots.txt 파일을 만들었는데요.  이번엔 검색로봇이 좋아하는 메타 태그를 작성해보려고합니다. 메타 태그(M

hunit.tistory.com

더보기

저번글에서는 검색로봇이 홈페이지나 웹사이트에 방문할 수 있도록 루트(ROOT)폴더에 robots.txt 파일을 만들었는데요.  이번엔 검색로봇이 좋아하는 메타 태그를 작성해보려고합니다. 메타 태그(Meta Tag)는 index나 메인페이지에서 소스로 작성하는 태그입니다.

 

 

 

 메타 태그(Meta Tag) 작성법

 

모든 메타 태그는 <HEAD> </HEAD> 사이에 작성합니다.

 

 

1. 로봇의 방문 설정

* 로봇 종류별 허용

<meta name="robots" content="ALL"> 

→ 모든 로봇의 방문을 허용

<meta name="robots" content="googlebot"> 

→ 구글로봇만 방문 허용

<meta name="robots" content="none"> 

→ 로봇방문을 허용하지 않음

 

* 로봇 명령

( index OR noindex  //  follow OR nofollow )

: index는 로봇이 본페이지 방문을 허용하는지,  follow는 로봇이 본페이지의 링크세테이션을 기준으로 방문을 허용하는지 기준입니다. 아래와 같이 사용하시면됩니다. 

<meta name="robots" content="index,follow"> 

<meta name="robots" content="noindex,follow"> 

<meta name="robots" content="index,nofollow"> 

<meta name="robots" content="noindex,nofollow"> 

 

 

2. 검색엔진에 잘 검색되는법

* 포털사이트에서 검색 되는 키워드 설정

<meta name = keywords" content="지훈이, HUNIT, 지훈블로그">

 

* 포털사이트에서 표시되는 단어 설정

<meta name ="description" content="지훈이, HUNIT, 지훈블로그">

 

* 사이트 제작자명

<meta name ="author" content="HUNIT">

 

* 문의메일

<meta name ="reply-to" content="simering@nate.com">

 

* 기록된 언어 

<meta name ="content-language" content="kr">

<meta name ="content-language" content="en">

 

* 인코딩 설정 

<meta http-equiv="content-type" content="text/html; charset=kr">

<meta http-equiv="content-type" content="text/html; charset=en">

 

 

이정도 메타태그의 내용만 적어두셔도 검색엔진에서 잘 잡구요. 여러 가지 변수로 사이트 노출이 잘 되지 않는 경우에는 공통 레이아웃이 아닌 메인 레이아웃이나 인덱스에 소스를 넣어 보세요. 

좋아요9
공유하기
글 요소
구독하기



출처: https://hunit.tistory.com/312 [HunIT Blog]

 

검색로봇이 좋아하는 메타(Meta) 태그

저번글에서는 검색로봇이 홈페이지나 웹사이트에 방문할 수 있도록 루트(ROOT)폴더에 robots.txt 파일을 만들었는데요.  이번엔 검색로봇이 좋아하는 메타 태그를 작성해보려고합니다. 메타 태그(M

hunit.tistory.com


 

방법3. 스프링컨트롤러에서 설정

https://mytalkhome.tistory.com/856

 

[Spring] 스프링에서 sitemap.xml 및 robots.txt 처리하기

스프링 프레임워크로 사이트를 개발하여 sitemap 및 robots.txt 를 처리해야할 필요가 있을때 아래처럼 구성하면 유기적으로 관리가 가능합니다. sitemap.xml 에 신규 컨텐츠를 지속적으로 추가해주어

mytalkhome.tistory.com

 

더보기

스프링 프레임워크로 사이트를 개발하여 sitemap 및 robots.txt 를 처리해야할 필요가 있을때 아래처럼 구성하면 유기적으로 관리가 가능합니다.

sitemap.xml 에 신규 컨텐츠를 지속적으로 추가해주어야 구글검색등에 반영이 될 수 있습니다

 

SitemapController.java

@Controller
public class SitemapController {

    @RequestMapping(value = "/sitemap.xml", method = RequestMethod.GET)
    @ResponseBody
    public XmlUrlSet main() {
        XmlUrlSet xmlUrlSet = new XmlUrlSet();
        create(xmlUrlSet, "", XmlUrl.Priority.HIGH);
        create(xmlUrlSet, "/link-1", XmlUrl.Priority.HIGH);
        create(xmlUrlSet, "/link-2", XmlUrl.Priority.MEDIUM);

        // for loop to generate all the links by querying against database
        ...

        return xmlUrlSet;
    }

    private void create(XmlUrlSet xmlUrlSet, String link, XmlUrl.Priority priority) {
        xmlUrlSet.addUrl(new XmlUrl("http://www.mysite.com" + link, priority));
    }

}

 

XmlUrl.java

@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(name = "url")
public class XmlUrl {
    public enum Priority {
        HIGH("1.0"), MEDIUM("0.5");

        private String value;

        Priority(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    @XmlElement
    private String loc;

    @XmlElement
    private String lastmod = new DateTime().toString(DateTimeFormat.forPattern("yyyy-MM-dd"));

    @XmlElement
    private String changefreq = "daily";

    @XmlElement
    private String priority;

    public XmlUrl() {
    }

    public XmlUrl(String loc, Priority priority) {
        this.loc = loc;
        this.priority = priority.getValue();
    }

    public String getLoc() {
        return loc;
    }

    public String getPriority() {
        return priority;
    }

    public String getChangefreq() {
        return changefreq;
    }

    public String getLastmod() {
        return lastmod;
    }
}

 

XmlUrlSet.java

@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")
public class XmlUrlSet {

    @XmlElements({@XmlElement(name = "url", type = XmlUrl.class)})
    private Collection<XmlUrl> xmlUrls = new ArrayList<XmlUrl>();

    public void addUrl(XmlUrl xmlUrl) {
        xmlUrls.add(xmlUrl);
    }

    public Collection<XmlUrl> getXmlUrls() {
        return xmlUrls;
    }
}

 

RobotsController.java

@Controller
public class RobotsController {

    @RequestMapping(value = "/robots.txt", method = RequestMethod.GET)
    public String getRobots(HttpServletRequest request) {
        return (Arrays.asList("mysite.com", "www.mysite.com").contains(request.getServerName())) ?
                "robotsAllowed" : "robotsDisallowed";
    }
}

 

 

 

 

 


@Controller
public class RobotsController {

    @RequestMapping(value = "/robots.txt", method = RequestMethod.GET)
    public String getRobots(HttpServletRequest request) {
        return "User-agent: * \nDisallow: /*test1/content \nDisallow: /*test2/content \nAllow: /";
    }
}

=> 이렇게 수정했다.


URL/robots.txt호출 했을 때

User-agent: * 
Disallow: /*test1/content 
Disallow: /*test2/content 
Allow: /

 

 

이렇게 보임..

 

 

근데 이게 실제로 검색이 안되고 있는건 어떻게 알 수 있지?

 

 

 

 

 

 

 

 

 

반응형

'차근차근 > 이것저것' 카테고리의 다른 글

daum 주소 api 적용하기(1)  (0) 2022.05.20
datatables (1)  (0) 2022.05.10
애니메이션 라이브러리인 TWEENMAX  (0) 2022.04.11
공통코드 개별코드  (0) 2022.04.01
폐쇄망에서 오피스 정품인증받기  (0) 2022.01.13