Ich habe eine mehrsprachige und mehrsprachige Site. Es läuft durch eine einzigartige CMS-Installation (Drupal), so dass ich ein einziges Stammverzeichnis habe. Wenn ich also eine statische robots.txt habe, kann ich dort meines Wissens nur die Dateien für eine einzelne Domain anzeigen.
Könnte ich eine Zeile in .htaccess setzen
Redirect 301 /robots.txt /robots.php
(oder eine gleichwertige Anweisung, und bitte geben Sie an, welche, falls zulässig)
so leitet es zu einer dynamischen PHP-Datei weiter, in der ich je nach $_SERVER['HTTP_HOST']
?
Und die gleiche Frage für sitemap.xml , damit ich eine dynamische sitemap.php bereitstellen kann, die unterschiedliche Links für jede unterschiedliche Domain angibt.
Das Problem ohne die Verwendung von .txt und .xml besteht, wie erwähnt, darin, dass alle Domänen ein einziges physisches Verzeichnis auf dem Servercomputer gemeinsam nutzen.
Antworten:
Sie können jede Datei dynamisieren. Der beste Weg, dies zu tun, ist nicht durch Weiterleitungen, sondern durch Umschreiben von Regeln.
Auf diese Weise können Sie ein dynamisches Skript verwenden, die URL ändert sich jedoch nicht. Die meisten Crawler (einschließlich Googlebot) folgen Weiterleitungen für robots.txt , aber einige Crawler werden verwirrt, wenn Sie Weiterleitungen einführen.
Beachten Sie, dass Ihre robots.txt für jeden Crawler für jede Domäne statisch erscheinen sollte, selbst wenn Sie sie mit PHP betreiben . Es ist in Ordnung, unterschiedliche Inhalte für unterschiedliche Domänen oder sogar für unterschiedliche Benutzeragenten bereitzustellen. Das zufällige Bereitstellen unterschiedlicher Inhalte oder basierend auf der Tageszeit kann jedoch Suchmaschinen-Crawler wirklich verwirren und Ihre SEO durcheinander bringen.
Sitemaps können nach Belieben benannt werden. Sie können diese umleiten oder eine Umschreiberegel verwenden, um sie dynamisch unter derselben URL zu aktivieren. Sie können sie auch wie benennen
Dann verweisen Sie auf sie in robots.txt :
oder senden Sie sie manuell über ihre Webmaster-Tools oder die Suchkonsole an die Suchmaschinen.
quelle
RewriteRule ^robots\.txt$ robots.php [L]
ohne das Symbol \ sein.^/robots\.txt$
) wäre erforderlich, wenn diese Anweisung in der Serverkonfiguration enthalten wäre, aber ja, sie stimmt nicht mit den .htaccess-Dateien pro Verzeichnis überein. Das Schrägstrichpräfix auf der Ersetzung (dh/robots.php
) ist in diesem Fall optional.Ja, genauso kann jede Anfrage "dynamisch" sein.
Sie würden jedoch nicht umleiten (wie in Ihrem Beispielcode), sondern sollten intern mit mod_rewrite neu schreiben . (Das gleiche wie das, was Drupal wahrscheinlich schon tut.)
Zum Beispiel in Ihrer .htaccess-Stammdatei:
RewriteEngine
sollte nur einmal auftreten (obwohl es nicht wirklich wichtig ist, wenn es mehrmals auftritt).Sie müssen nur sicherstellen, dass keine Konflikte mit anderen Anweisungen in Ihrer .htaccess-Datei auftreten. So sollte dies wahrscheinlich in der Nähe des Anfangs der Datei, auf jeden Fall vor Ihrem Front - Controller .
quelle
Es ist in Ordnung, die Sitemap-Datei dynamisch zu gestalten - dies ist eine gute Möglichkeit, Ihre Sitemaps automatisch zu aktualisieren.
Das Dynamisieren der robots.txt-Datei (für denselben Host! Dies für separate Hosts zu tun, ist im Wesentlichen nur eine normale robots.txt-Datei für jeden von ihnen.) Würde wahrscheinlich Probleme verursachen: Sie wird nicht jedes Mal gecrawlt, wenn eine URL von der Site gecrawlt wird Es kann also vorkommen, dass die "falsche" Version zwischengespeichert wird. Wenn Sie beispielsweise Ihren robots.txt-Dateiblock während der Geschäftszeiten crawlen lassen, wird er möglicherweise zwischengespeichert und einen Tag lang verfolgt. Dies bedeutet, dass nichts gecrawlt wird (oder alternativ zwischengespeichert wird, wenn das Crawlen zulässig ist). Google crawlt die robots.txt-Datei beispielsweise für die meisten Websites etwa einmal täglich.
quelle
Es ist nicht erforderlich, sitemap.php zu erstellen, weil: 1. Für jede Sprache können Sie eine separate sitemap.xml-Datei ausführen und jede in Suchmaschinenkonsolen angeben. 2. Standard-Sitemap-Dateien können regelmäßig neu geschrieben werden, um aktuelle Inhalte einzuschließen, und sie werden dadurch dynamisch - dafür ist .php nicht erforderlich. Es liegt am internen Aktualisierungsmechanismus und am Cron, dieselbe Datei mit der Standarderweiterung .xml neu zu erstellen
Sitemap.xml-Dateien sind statisch und werden nur durch Aktualisierungen dynamisch - sie werden nicht in Echtzeit aktualisiert. Es ist möglich, dass sie jede Minute neu geschrieben werden, aber es ist nicht erforderlich, weil: 1. Google es nicht in weniger als 1 Stunde seit der letzten Übermittlung überprüft. 2. Wenn Sitemap-Dateien groß sind, schreiben Sie sie neu oft wird die Serverleistung kaputt machen.
Wenn ein großes Datenvolumen vorhanden ist und die Sitemap-Datei größer als 50 MB ist, ist ein System mit mehreren Sitemaps erforderlich. Dies bedeutet, dass sitemap2,3 ... .xml zur Liste der Hauptdatei hinzugefügt wird. Der Inhalt dieser Dateien bleibt jedoch auch unverändert, bis diese Dateien neu erstellt werden (z. B. von cron).
Zu erwähnen ist auch, dass eine Suchmaschine, sobald sie auf die Datei zugegriffen hat, nicht sehr schnell wieder darauf zurückkehrt (es sei denn, dies erfolgt manuell). Es wird bestätigt, dass es auf keinen Fall erforderlich ist, eine Echtzeitaktualisierung von sitemap.php zu erstellen, da eine normale sitemap.xml für sich genommen dynamisch sein kann und den ganzen Tag oder eine Woche lang mit neuen Inhalten aktualisiert wird.
Ich kann mir keine Profis vorstellen, die eine sitemap.php verwenden. Es wird nichts nützen, da es andere bessere / richtige Möglichkeiten gibt, diese Dateien zu verwenden.
quelle