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

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

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

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

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

감사!



답변

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

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

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


답변

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]


답변

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


답변

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

클러스터 환경에서 여러 (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>


답변