fragen stichworte

Wie kann ich verschiedene robots.txt für http und https auf derselben Site bereitstellen?

Ich habe eine kleine Site, die von Apache bedient wird (ich kann Nginx nicht in den Vordergrund stellen oder Apache in irgendetwas ändern), und sie ist so eingerichtet, dass sie dieselbe Site sowohl über http als auch über https bedient (keine Weiterleitung von http-> https) gibt es bisher, also werden sowohl die http- als auch die https-version parallel bereitgestellt).

Was muss ich tun, um .htaccess so einzustellen, dass derselbe URI über http und über https unterschiedliche Textdateien bereitstellt?

Wie http://example.com/proto.txt sagt, "Die Website ist über http", während https://example.com/proto.txt sagen würde "Die Website wurde über https geschaltet".

antworten

Verwenden Sie einen Alias ​​

Erstellen Sie zwei Dateien, robots.txt und robots_http.txt, und fügen Sie diese zu Ihrem http VirtualHost hinzu:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"

Wenn Sie die "main" Apache-Konfiguration nicht ändern können oder müssen, dies aber in einer .htaccess -Datei tun müssen, können Sie ein RewriteRule mit einem RewriteCond verwenden, das nach HTTPS sucht.

Etwas in der Art von:

RewriteEngine On

RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]

sollte wahrscheinlich funktionieren (ich habe es nicht getestet).

Beachten Sie, dass dies darauf basiert, dass Apache die HTTPS-Beendigung selbst durchführt. Wenn die HTTPS-Terminierung zuvor auf einem Reverse-Proxy durchgeführt wird, ist die Bedingung wahrscheinlich anders (und hängt von der Konfiguration des Reverse-Proxy und des Apache ab).