Mamy konfigurację serwera WWW rozwoju Apache XAMPP z wirtualnymi hostami i chcemy powstrzymać serps przed indeksowaniem wszystkich naszych stron. Można to łatwo zrobić za pomocą pliku robots.txt. Jednak wolelibyśmy nie umieszczać pliku disallow robots.txt na każdym vhostie, a następnie musielibyśmy go usunąć, gdy uruchomiliśmy witrynę na innym serwerze.
Czy istnieje sposób z plikiem konfiguracyjnym Apache, aby przepisać wszystkie żądania do robots.txt na wszystkich vhostach do pojedynczego pliku robots.txt?
Jeśli tak, czy możesz podać mi przykład? Myślę, że byłoby to coś takiego:
RewriteEngine On
RewriteRule .*robots\.txt$ C:\xampp\vhosts\override-robots.txt [L]
Dzięki!
apache-2.2
php
robots.txt
Michael Berkompas
źródło
źródło
Odpowiedzi:
Apache mod_alias jest przeznaczony do tego i dostępny z podstawowego systemu Apache, i może być ustawiony w jednym miejscu prawie bez narzutu przetwarzania, w przeciwieństwie do mod_rewrite.
Z tą linią w pliku apache2.conf, poza wszystkimi vhostami, http://example.com/robots.txt - na dowolnej stronie internetowej, którą obsługuje, wyświetli podany plik.
źródło
Alias
w każdym<VirtualHost>
bloku. +1.<Location "/robots.txt"> Allow from all </Location>
zaraz po nim wewnątrz głównego<IfModule alias_module>
Umieść swój wspólny
robots.txt
plik globalny gdzieś w systemie plików serwera, który jest dostępny dla procesu apache. Dla ilustracji zakładam, że to jest/srv/robots.txt
.Następnie, aby skonfigurować
mod_rewrite
obsługę tego pliku dla klientów, którzy go zażądają, umieść następujące reguły w<VirtualHost>
bloku konfiguracji każdego vhosta :Jeśli umieszczasz reguły przepisywania w
.htaccess
plikach dla poszczególnych katalogów , a nie w<VirtualHost>
blokach, musisz nieco zmodyfikować reguły:źródło
mod_rewrite
hackowaniem. UżyjAlias
zamiast tego, zgodnie z sugestią Alister.Nie jestem pewien, czy używasz XAMPP w systemie Linux, czy nie, ale jeśli tak, możesz utworzyć dowiązanie symboliczne ze wszystkich hostów wirtualnych do tego samego pliku robots.txt, ale musisz upewnić się, że konfiguracja Apache dla każdego hosta wirtualnego jest wolno podążać za dowiązaniami symbolicznymi (zgodnie z
<Directory>
dyrektywąOptions FollowSymLinks
).źródło
Inne podejście do rozwiązania.
W moim środowisku klastrowym hostuję wiele (ponad 300) wirtualnych hostów. Aby uchronić moje serwery przed atakami robota, definiuję opóźnienie indeksowania na 10 sekund.
Nie mogę jednak wymusić na wszystkich moich klientach stałej konfiguracji pliku robots.txt. Pozwalam moim klientom korzystać z własnego pliku robots.txt, jeśli chcą.
Moduł Przepisz najpierw sprawdza, czy plik istnieje. Jeśli nie istnieje, moduły przepisują moją konfigurację domyślną. Przykład kodu poniżej ...
Aby zachować przepisywanie wewnętrzne, należy użyć aliasu. Zamiast definiować nowy alias, który może powodować konflikty po stronie użytkownika, umieściłem mój plik robots.txt w folderze / APACHE / error /, który ma już domyślny alias.
źródło