Mam witrynę wielojęzyczną i wielodomenową. Działa poprzez unikalną instalację CMS (Drupal), więc mam jeden katalog główny. Więc jeśli mam statyczny plik robots.txt, tam, o ile wiem, mogę wyświetlać pliki tylko dla jednej domeny.
Czy mogę umieścić linię w .htaccess
Redirect 301 /robots.txt /robots.php
(lub równoważna instrukcja i proszę wskazać, która z nich jest dozwolona)
więc przekierowuje do dynamicznego pliku php, w którym mogę podawać różne zawierają zgodnie z $_SERVER['HTTP_HOST']
?
I to samo pytanie do sitemap.xml , więc mogę podać dynamiczny sitemap.php, który wskazuje różne linki dla każdej innej domeny.
Problem z brakiem używania .txt i .xml polega na tym, że, jak wspomniano, wszystkie domeny współużytkują jeden katalog fizyczny na komputerze serwera.
Odpowiedzi:
Możesz uczynić dowolny plik dynamicznym. Najlepszym sposobem na to nie są przekierowania, ale reguły przepisywania.
W ten sposób zasilasz go dynamicznym skryptem, ale adres URL się nie zmienia. Większość robotów (w tym Googlebot) będzie podążać za przekierowaniami dla pliku robots.txt , ale niektóre roboty będą zdezorientowane, jeśli wprowadzisz przekierowania.
Pamiętaj, że nawet jeśli zasilasz go PHP, plik robots.txt powinien wydawać się statyczny dla każdego przeszukiwacza dla każdej domeny. Dobrze jest podawać różne treści dla różnych domen, a nawet dla różnych programów użytkownika. Jednak serwowanie różnych treści losowo lub w zależności od pory dnia może naprawdę wprowadzić w błąd wyszukiwarki i zepsuć SEO.
Mapy witryn można nazywać dowolnie. Możesz je przekierować lub użyć reguły przepisywania, aby zasilać je dynamicznie pod tym samym adresem URL. Możesz także nazwać je jak
Następnie zapoznaj się z nimi w pliku robots.txt :
lub prześlij je ręcznie do wyszukiwarek za pomocą narzędzi dla webmasterów lub konsoli wyszukiwania.
źródło
RewriteRule ^robots\.txt$ robots.php [L]
bez symbolu \.^/robots\.txt$
) Byłby wymagany, gdyby ta dyrektywa była w konfiguracji serwera, ale tak, nie będzie pasować w plikach .htaccess dla katalogu. Prefiks ukośnika na podstawieniu (tj./robots.php
) Jest w tym przypadku opcjonalny.Tak, w ten sam sposób każde żądanie może być „dynamiczne”.
Jednak nie przekierowałbyś (jak w przykładowym kodzie), powinieneś wewnętrznie przepisać przy użyciu mod_rewrite. (To samo, co Drupal prawdopodobnie już robi.)
Na przykład w głównym pliku .htaccess:
RewriteEngine
powinien wystąpić tylko raz (chociaż tak naprawdę nie ma znaczenia, czy występuje wiele razy).Musisz tylko upewnić się, że nie koliduje on z żadnymi innymi dyrektywami w pliku .htaccess. Tak, to prawdopodobnie powinien być w pobliżu początku pliku, na pewno przed przednim sterownika .
źródło
Dynamiczne tworzenie pliku mapy witryny jest w porządku - to dobry sposób na automatyczną aktualizację map witryn.
Uczynienie pliku robots.txt dynamicznym (dla tego samego hosta! Zrobienie tego dla osobnych hostów jest zasadniczo zwykłym plikiem robots.txt dla każdego z nich.) Prawdopodobnie spowodowałoby problemy: nie jest indeksowane za każdym razem, gdy adres URL jest indeksowany z witryny , więc może się zdarzyć, że „zła” wersja zostanie buforowana. Na przykład jeśli indeks pliku robots.txt zostanie zaindeksowany w godzinach pracy, możliwe jest, że zostanie on następnie zapisany w pamięci podręcznej i będzie śledzony przez jeden dzień - co oznacza, że nic nie zostanie zaindeksowane (lub alternatywnie buforowane, gdy indeksowanie jest dozwolone). Na przykład Google indeksuje plik robots.txt raz dziennie w przypadku większości witryn.
źródło
Nie trzeba tworzyć sitemap.php, ponieważ: 1. Dla każdego języka możesz uruchomić osobny plik sitemap.xml i określić każdy w konsolach wyszukiwarek. 2. Standardowe pliki map witryn można regularnie zapisywać, aby uwzględnić najnowsze treści, co czyni je w sposób dynamiczny - do tego .php nie jest wymagany. To od wewnętrznego mechanizmu aktualizacji i crona można odtworzyć ten sam plik ze standardowym rozszerzeniem .xml
Pliki Sitemap.xml są statyczne i tylko aktualizacje sprawiają, że są dynamiczne - nie aktualizują się w czasie rzeczywistym. Możliwe jest, że zmuszą ich do ponownego pisania co minutę, ale nie ma takiej potrzeby, ponieważ: 1. Google nie sprawdzi tego w ciągu mniej niż 1 godziny od ostatniego przesłania 2. Gdy pliki map witryn są duże, ponownie je zapisuj często sprawi, że wydajność serwera będzie kaput.
W przypadku dużej ilości danych, która powoduje, że plik mapy witryny jest większy niż 50 MB, wymagany jest system z wieloma mapami witryn. Oznacza to, że sitemap2,3 ... .xml doda się do listy pliku głównego, ale zawartość tych plików pozostaje również stała do czasu odtworzenia tych plików (na przykład przez crona).
Należy również wspomnieć, że gdy wyszukiwarka uzyska dostęp do pliku, nie wróci do niego bardzo szybko (chyba że zostanie to zrobione ręcznie). Potwierdza to, że nie ma potrzeby tworzenia aktualizacji sitemap.php w czasie rzeczywistym, ponieważ zwykły sitemap.xml sam w sobie może być dynamiczny, aktualizując nowe treści w ciągu dnia lub tygodnia.
Nie mogę wymyślić żadnych profesjonalistów korzystających z sitemap.php. Nie przyniesie to żadnego pożytku, ponieważ istnieją inne lepsze / właściwe sposoby korzystania z tych plików.
źródło