¿Cómo servir diferentes robots.txt para http y https en el mismo sitio?

11

Obtuve un sitio pequeño que funcionaba con Apache (no puedo poner Nginx al frente ni cambiar Apache a nada), y está configurado para servir el mismo sitio a través de http y https (no hay redirecciones http-> https, así que hasta ahora, por lo que las versiones http y https se sirven en paralelo).

¿Lo que necesito es configurar .htaccesspara que el mismo URI a través de http y https sirva diferentes archivos de texto?

Como http://example.com/proto.txtdice "El sitio está sobre http" mientras https://example.com/proto.txtque dice "El sitio está sobre https".

Kevin M
fuente
No tengo tiempo para verificar la forma exacta de escribir esto (y, por lo tanto, solo un comentario, no una respuesta), pero otra opción si no desea o no puede cambiar la configuración principal de Apache, es usar una RewriteRuleen su .htaccesscondición de que se sirva a través de https.
jcaron
@dcaron, esto es exactamente lo que necesito, simplemente no puedo entender cómo hacerlo exactamente y necesito un consejo o (mejor) fragmento de código para hacerlo :)
Kevin M
Sus sitios http y https están en diferentes <VirtualHost>s. Por lo tanto, simplemente necesita configurar un archivo robots.txt diferente en uno de ellos. Alrededor así:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
Peter

Respuestas:

19

Usa un alias

Cree dos archivos, robots.txt y robots_http.txt y agréguelos a su http VirtualHost:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
Gerald Schneider
fuente
No se puede modificar la configuración de vhost, solo se puede editar .htaccess, este es el truco.
Kevin M
2

Si no puede o no cambiará la configuración "principal" de Apache pero necesita hacerlo en un .htaccessarchivo, puede usar un RewriteRulecon un RewriteCondque compruebe HTTPS.

Algo en la línea de:

RewriteEngine On

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

probablemente debería funcionar (no lo probé).

Tenga en cuenta que esto se basa en que Apache realiza la terminación HTTPS. Si la terminación HTTPS se realiza en un proxy inverso antes, la condición probablemente será diferente (y dependerá de la configuración del proxy inverso y Apache).

jcaron
fuente