Wir entwickeln Websites und hosten die QA-Umgebung auf demselben Server wie die Produktionsumgebung. Ich möchte eine spezielle robots.txt-Datei für alle QA-Sites bereitstellen, aber nicht für die Produktionssites. Wir haben einevielvon Sites, daher möchte ich nicht Hunderte von Vhost-Konfigurationsblöcken aktualisieren. Die QA-Sites sind sowohl am Domänennamen als auch am Verzeichnis, in dem sie sich befinden, leicht zu identifizieren. QA- und Produktionssites sind in zwei verschiedenen Verzeichnissen gruppiert. Alle QA-Sites werden unter *.qa.mycompany.com gehostet.
Beispielproduktion: Host: example.org Docroot: /var/www/production/example.org
Beispiel QA: Host: example.qa.mycompany.com Docroot: /var/www/qa/example.org
Gibt es eine Möglichkeit, Apache so zu konfigurieren, dass eine robots.txt-Datei für alle QA-Sites, aber nicht für die Produktionssites bereitgestellt wird, ohne alle QA-Vhost-Konfigurationen aktualisieren zu müssen?
Antwort1
Sie könnten dies hinzufügen
<Directory "/var/www/qa/*">
Redirect permanent robots.txt http://example.com/qa_robots.txt
</Directory>
Dann könnten Sie Ihre qa-robots.txt in einem öffentlichen Bereich auf einem globalen Host ablegen, der Verzeichnisblock sollte für alle /qa/-Ordner eine Weiterleitung dorthin bereitstellen.
Auch Suchmaschinen sollten dieser Weiterleitung folgen.
Anstelle der Umleitung können Sie auch hinzufügen
Fehlerdokument 404 "/var/www/qa_robots.txt"
Dies wird jedoch einen 404-Fehlercode senden. Ich bin mir nicht sicher, wie Suchbots darauf reagieren. Ich denke, es könnte auch eine Möglichkeit geben, dies mitmod_umschreibenund ein passendesRewriteCond
Antwort2
Sie können es tun mitmod_aliasundIf-Anweisung, fügen Sie dies zu Ihrer Serverkonfiguration hinzu:
Alias /robots.txt /path/to/robots.txt
Alias /qa_robots.txt /path/to/robots.txt
<If "%{DOCUMENT_ROOT} =~ /(\x2Fvar\x2Fwww\x2Fqa\x2F)/">
RewriteRule ^robots\.txt$ qa_robots.txt
</If>
Die If-Anweisung ist nur unter Apache 2.4 verfügbar und Sie haben Ihre Frage als 2.2 und 2.4 gekennzeichnet. Daher wird Ihr Problem möglicherweise nicht gelöst, wenn Sie Apache 2.2 verwenden.
/
Da Sie in der if-Anweisung nicht entkommen können , /
werden ersetzt durchx2F
Ich habe es nicht getestet, aber theoretisch sollte es funktionieren.