Wie werden verschiedene robots.txt für http und https auf derselben Site bereitgestellt?

11

Ich habe eine kleine Site, die von Apache bereitgestellt wird (ich kann weder Nginx in den Vordergrund stellen noch Apache in irgendetwas ändern), und sie ist so eingerichtet, dass sie dieselbe Site sowohl über http als auch über https bereitstellt (es gibt also keine Weiterleitungen von http-> https) Bisher werden also sowohl die http- als auch die https-Version parallel bereitgestellt.

Was ich brauche, ist, .htaccessdenselben URI über http und über https einzurichten , um verschiedene Textdateien bereitzustellen?

Wie http://example.com/proto.txtsagt "Die Site ist über http", während https://example.com/proto.txtsagen würde "Die Site wird über https bereitgestellt".

Kevin M.
quelle
Sie haben nicht die Zeit, die genaue Schreibweise zu überprüfen (und damit nur einen Kommentar, keine Antwort), aber eine andere Option, wenn Sie die Apache-Hauptkonfiguration nicht ändern möchten oder können, ist die Verwendung a RewriteRulein your .htaccessmit der Bedingung, dass es über https bereitgestellt wird.
JCaron
@dcaron, das ist genau das, was ich brauche, ich kann einfach nicht herausfinden, wie das genau geht, und brauche dazu einen Rat oder ein (besseres) Code-Snippet :)
Kevin M
Ihre http- und https-Sites befinden sich in verschiedenen <VirtualHost>s. Sie müssen also einfach eine andere robots.txt in einer davon konfigurieren. Um so:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
Peterh

Antworten:

19

Verwenden Sie einen Alias

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

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
Gerald Schneider
quelle
Kann vhost Einstellungen nicht ändern, kann nur .htaccess bearbeiten, das ist der Trick.
Kevin M
2

Wenn Sie die "Haupt" -Apache-Konfiguration nicht ändern können oder wollen, dies aber in einer .htaccessDatei tun müssen , können Sie eine RewriteRulemit a verwenden RewriteCond, die 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 ausführt. Wenn die HTTPS-Beendigung zuvor auf einem Reverse-Proxy erfolgt, ist die Bedingung wahrscheinlich anders (und hängt von der Konfiguration des Reverse-Proxys und von Apache ab).

jcaron
quelle