Apache 서버의 모든 도메인에 robots.txt 파일을 만드는 방법


10

가상 호스트를 사용한 XAMPP Apache 개발 웹 서버 설정이 있으며 serps가 모든 사이트를 크롤링하지 못하게하려고합니다. 이것은 robots.txt 파일로 쉽게 수행 할 수 있습니다. 그러나 모든 가상 호스트에 disallow robots.txt를 포함하지 않고 다른 서버에서 사이트를 방문했을 때 제거해야합니다.

모든 호스트의 robots.txt에 대한 모든 요청을 단일 robots.txt 파일에 다시 쓰는 방법은 아파치 구성 파일이 있습니까?

그렇다면 예를 들어 주시겠습니까? 나는 이것이 다음과 같을 것이라고 생각한다.

RewriteEngine On
RewriteRule  .*robots\.txt$         C:\xampp\vhosts\override-robots.txt [L] 

감사!


robots.txt는 필수가 아니며 일부 크롤러는이를 무시합니다. 보안 기능으로 보이면 안됩니다. 공개 준비가 될 때까지 사이트를 숨기려면 인증을 추가하십시오.
Mircea Vutcovici

답변:


25

Apache mod_alias 는이를 위해 설계되었으며 핵심 Apache 시스템에서 사용할 수 있으며 mod_rewrite와 달리 처리 오버 헤드없이 거의 한 곳에서 설정할 수 있습니다.

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

apache2.conf 파일의 해당 줄을 사용하면 모든 호스트의 외부인 http://example.com/robots.txt- 제공되는 모든 웹 사이트에서 지정된 파일이 출력됩니다.


이. Alias<VirtualHost>블록 에을 넣으십시오 . +1.
Steven

감사! 완벽하게 작동했습니다. 나는 쉬운 해결책이 있다는 것을 알고 있었다.
Michael Berkompas

모든 단일 가상 호스트에서 원하는 경우 모든 가상 호스트에 넣을 필요는 없습니다. 기본 / 수동 별칭이 기본적으로 수행하는 것처럼 전역 수준으로 이동할 수 있습니다.
Alister Bulman

C : /를 보았지만 솔루션에 감사드립니다. 다른 Windows 서버가 있다는 것을 알고 있으면 위장에 아플 수 있습니다.) /robots.txt /var/www/robots.txt
unc0nnected.

1
다른 액세스 제어에서 파일을 차단할 <Location "/robots.txt"> Allow from all </Location><IfModule alias_module>
때도이

1

robots.txt아파치 프로세스가 액세스 할 수있는 서버의 파일 시스템 어딘가에 공통 글로벌 파일을 배치하십시오 . 설명을 위해에 있다고 가정하겠습니다 /srv/robots.txt.

그런 다음 mod_rewrite해당 파일을 요청하는 클라이언트에게 해당 파일을 제공 하도록 설정하려면 각 호스트의 <VirtualHost>구성 블록에 다음 규칙을 적용하십시오 .

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

다시 쓰기 규칙을 블록이 .htaccess아닌 디렉토리 별 파일 <VirtualHost>에 넣으려면 규칙을 약간 수정해야합니다.

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]

"아파치 프로세스가 액세스 할 수있는 서버의 파일 시스템에 공통 글로벌 robots.txt 파일을 넣습니다. 설명을 위해 /srv/robots.txt에 있다고 가정하겠습니다." 더 자세하게? 아파치 프로세스에 사용 가능한 디렉토리를 만들어서 무슨 의미인지 알아야합니까?
Michael Berkompas

각 사이트는 testsite.int.devcsd.com과 같은 폴더에 C : \ xampp \ vhosts에 있습니다.
Michael Berkompas

@Michael : 지나치게 복잡한 mod_rewrite해킹에 신경 쓰지 마십시오 . AliasAlister가 제안한대로 대신 사용하십시오 .
Steven 월요일

0

Linux에서 XAMPP를 실행 중인지 확실하지 않지만, 그렇지 않은 경우 모든 가상 호스트에서 동일한 robots.txt 파일 로 심볼릭 링크 를 작성할 수 있지만 각 가상 호스트에 대한 Apache 구성이 올바른지 확인해야합니다. <Directory>지시어 에 따라 심볼릭 링크를 따라갈 수 Options FollowSymLinks있습니다.


오히려 모든 단일 vhost 선언을 편집 할 필요는 없습니다. 30 개가 넘습니다. 게다가, 새로운 가상 호스트를 만들 때 아무 것도 할 필요가 없도록 자동 오버라이드를 원합니다.
Michael Berkompas

마이클, sed를 사용하여 대량 편집, 매우 쉬운 작업을 수행하십시오. 수동으로 할 필요는 없습니다. : 아래에 여기에 그것을 할 방법을 공개 blog.netflowdevelopments.com/2012/10/11/...
unc0nnected

0

솔루션에 대한 다른 접근 방식.

클러스터 환경에서 여러 (300 개가 넘는) 가상 호스트를 호스팅합니다. 크롤러가 서버를 망치지 않도록 10 초 동안 크롤링 지연을 정의합니다.

그러나 고정 된 robots.txt 구성으로 모든 클라이언트를 강제 할 수는 없습니다. 고객이 원하는 경우 자신의 robots.txt를 사용하도록했습니다.

다시 쓰기 모듈은 먼저 파일이 존재하는지 확인합니다. 존재하지 않는 경우 모듈은 기본 구성으로 다시 씁니다. 아래 코드 예제 ...

내부에서 다시 쓰기를 유지하려면 별명을 사용해야합니다. 일부 사용자 측 충돌을 일으킬 수있는 새로운 별칭을 정의하는 대신 이미 기본 구성으로 별칭이있는 / APACHE / error / 폴더에 robots.txt를 배치했습니다.

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.