Як створити файл robots.txt для всіх доменів на сервері Apache


10

У нас є налаштування веб-сервера розробки XAMPP Apache з віртуальними хостами і хочемо зупинити серпи від сканування всіх наших сайтів. Це легко зробити за допомогою файлу robots.txt. Однак, ми не бажаємо включати забороняти robots.txt у кожен vhost, а потім мусимо видалити його, коли ми перейшли наживо із сайтом на інший сервер.

Чи є спосіб налаштування файлу apache переписати всі запити на robots.txt на всіх vhosts до одного файлу robots.txt?

Якщо так, ви можете мені навести приклад? Я думаю, це було б щось подібне:

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

Дякую!


robots.txt не є обов'язковим, і деякі сканери ігнорують його. Це не слід розглядати як функцію безпеки. Якщо ви хочете приховати свій сайт до готовності для загального доступу, додайте автентифікацію.
Мірча Вутковичі

Відповіді:


25

Apache mod_alias розроблений для цього і доступний в основній системі Apache, і його можна встановити в одному місці майже без режиму обробки даних, на відміну від mod_rewrite.

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

За допомогою цього рядка у файлі apache2.conf за межами всіх vhost http://example.com/robots.txt - на будь-якому веб-сайті, який він обслуговує, буде виведено даний файл.


Це. Помістіть Aliasу кожному <VirtualHost>блоці. +1.
Стівен у понеділок

Дякую! Це спрацювало чудово. Я знав, що існує просте рішення ...
Майкл Беркомпас

Якщо ви хочете його на кожному віртуальному хості, вам не потрібно вводити їх у всі. Це може виходити на глобальному рівні, як і псевдонім за замовчуванням / вручну.
Алістер Бульман

Дякую за рішення, хоча бачу C: / там мені нудить живіт, знаючи, що там є ще один сервер Windows :) Я помістив свою редагування у свій файл module.conf або в мод з включеним / alias.conf так: Псевдонім
/robots.txt

1
Щоб переконатися, що цей файл доступний навіть тоді, коли інші контролі доступу заблокують його, поставте псевдонім та <Location "/robots.txt"> Allow from all </Location>одразу після нього всередині основного<IfModule alias_module>
Walf

1

Помістіть загальний глобальний robots.txtфайл кудись у файлову систему вашого сервера, доступну для процесу apache. Для ілюстрації, я вважаю, що це є /srv/robots.txt.

Потім, щоб налаштувати, mod_rewriteщоб цей файл обслуговувався клієнтам, які його запитують, введіть такі правила у <VirtualHost>конфігураційний блок кожного vhost :

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 кудись у файлову систему вашого сервера, доступну для процесу apache. Для ілюстрації, я вважаю, що це за адресою /srv/robots.txt." більш докладно? Мені потрібно знати, що ви маєте на увазі, створивши каталог, доступний процесу apache?
Майкл Беркомпас

Кожен сайт міститься у папці на зразок testingite.int.devcsd.com під C: \ xampp \ vhosts
Michael Berkompas

@Michael: Не турбуйтеся з цим надмірно складним mod_rewriteзлом. Використовуйте Aliasзамість цього, як пропонує Алістер.
Стівен у понеділок

0

Не впевнений, чи працює ви XAMPP в Linux чи ні, але якщо ви є, ви можете створити симпосилання з усіх віртуальних хостів до одного файлу robots.txt, але вам потрібно переконатися, що ваша конфігурація Apache для кожного віртуального хоста є дозволяється слідувати посиланнями (відповідно до <Directory>директиви Options FollowSymLinks).


Я б краще не редагував кожну заяву vhost. Є понад 30 ... Плюс до цього, я хочу, щоб це було автоматичним переїздом, щоб мені не довелося нічого робити, коли я створюю новий vhost.
Майкл Беркомпас

Майкл, просто використовуй sed, щоб зробити масове редагування, досить простий матеріал, напевно, це не потрібно робити вручну. Розказано, як це зробити тут внизу: blog.netflowdevelopments.com/2012/10/11/…
unc0зв’язано

0

Різний підхід до рішення.

Я розміщую декілька (більше 300) virtualhost у своєму кластерному середовищі. Щоб захистити мої сервери від забивання сканерами, я визначаю затримку сканування на 10 секунд.

Однак я не можу примусити всіх своїх клієнтів із фіксованою конфігурацією robots.txt. Я дозволяю своїм клієнтам використовувати власний robots.txt, якщо вони хочуть це зробити.

Модуль перезапису спочатку перевіряє, чи існує файл. Якщо його не існує, модулі переписуються до моєї конфігурації за замовчуванням. Приклад коду нижче ...

Щоб зберегти перезапис внутрішніх даних, слід використовувати псевдонім. Замість того, щоб визначити новий псевдонім, який може викликати певні конфлікти на стороні користувача, я розмістив свій robots.txt всередині / APACHE / error / folder, який уже має псевдонім як конфігурацію за замовчуванням.

<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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.