Próbuję ustawić robots.txt
dla wszystkich wirtualnych hostów na serwerze http nginx. Byłem w stanie to zrobić w Apache, umieszczając następujące w głównym httpd.conf
:
<Location "/robots.txt">
SetHandler None
</Location>
Alias /robots.txt /var/www/html/robots.txt
Próbowałem zrobić coś podobnego z nginx, dodając wiersze podane poniżej (a) w nginx.conf i (b) jako dołączone conf.d / robots.conf
location ^~ /robots.txt {
alias /var/www/html/robots.txt;
}
Próbowałem z „=”, a nawet umieściłem go w jednym z wirtualnych hostów, aby go przetestować. Wydawało się, że nic nie działa.
Czego tu brakuje? Czy istnieje inny sposób na osiągnięcie tego?
nginx
robots.txt
anup
źródło
źródło
Odpowiedzi:
Lokalizacja nie może być użyta wewnątrz
http
bloku. nginx nie ma globalnych aliasów (tj. aliasów, które można zdefiniować dla wszystkich vhostów). Zapisz swoje definicje globalne w folderze i dołącz je.źródło
Możesz ustawić zawartość pliku robots.txt bezpośrednio w konfiguracji nginx:
Można również dodać poprawny typ zawartości:
źródło
location = /robots.txt
(zwróć uwagę na znak równości), w przeciwnym razielocation ~* \.(txt|log)$
zastąpiłoby go kolejne dopasowanie poniżej.conf.d/robots.conf
? Podobnie jak dyrektywa „lokalizacja” nie jest tutaj dozwolona , co jest rozsądne, ale nie dotyczy konkretnego serwera. Nie jestem pewien odpowiedzi @ user79644 na to pytanie. Czy dodanie tego do każdej witryny jest nieuniknione?Czy istnieją inne reguły, które są zdefiniowane? Może dołączony jest plik common.conf lub inny plik conf, który zastępuje konfigurację. Jedna z poniższych rzeczy zdecydowanie powinna działać.
źródło
/robots.txt
plik do aliasu. Nie dostałemroot
opcji do pracy.Miałem ten sam problem z wyzwaniami acme, ale ta sama zasada dotyczy również twojego przypadku.
Aby rozwiązać ten problem, przeniosłem wszystkie moje witryny do niestandardowego portu, wybrałem
8081
i utworzyłem wirtualny serwer nasłuchujący na porcie 80.127.0.0.1:8081
Odpowiada on na wszystkie żądania , z wyjątkiem tych na dobrze znane. Działa to prawie jak globalny alias z jednym dodatkowym przeskokiem, ale nie powinno to powodować znacznego spadku wydajności z powodu asynchronicznej natury nginx.źródło