Comment servir différents robots.txt pour http et https sur le même site?

11

J'ai un petit site qui est servi par Apache (je ne peux pas mettre Nginx devant ni changer Apache en quoi que ce soit), et il est configuré pour servir le même site à la fois sur http et https (aucune redirection http-> https n'est là donc jusqu'à présent, les versions http et https sont donc servies en parallèle).

Ce dont j'ai besoin est de configurer .htaccessle même URI via http et via https pour servir un fichier texte différent?

Comme http://example.com/proto.txtdit "Le site est sur http" alors https://example.com/proto.txtque dirait "Le site est servi sur https".

Kevin M
la source
Je n'ai pas tout à fait le temps de vérifier la façon exacte d'écrire ceci (et donc juste un commentaire, pas une réponse), mais une autre option si vous ne voulez pas ou ne pouvez pas changer la configuration principale d'Apache, est d'utiliser un RewriteRuledans votre .htaccessavec une condition sur le service via https.
jcaron
@dcaron, c'est exactement ce dont j'ai besoin, je n'arrive pas à comprendre comment le faire exactement, et j'ai besoin d'un conseil ou d'un (meilleur) extrait de code pour le faire :)
Kevin M
Vos sites http et https sont dans des <VirtualHost>s différents . Il vous suffit donc de configurer un autre robots.txt dans l'un d'eux. Autour de ainsi:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
Peterh

Réponses:

19

Utiliser un alias

Créez deux fichiers, robots.txt et robots_http.txt et ajoutez-le à votre http VirtualHost:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
Gerald Schneider
la source
Impossible de modifier les paramètres de vhost, ne peut modifier que .htaccess, c'est l'astuce.
Kevin M
2

Si vous ne pouvez pas ou ne voulez pas changer la configuration "principale" d'Apache mais que vous devez le faire dans un .htaccessfichier, vous pouvez utiliser un RewriteRuleavec un RewriteCondqui vérifie HTTPS.

Quelque chose dans le sens de:

RewriteEngine On

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

devrait probablement fonctionner (je ne l'ai pas testé).

Notez que cela est basé sur Apache qui fait lui-même la terminaison HTTPS. Si la terminaison HTTPS est effectuée sur un proxy inverse avant lui, la condition sera probablement différente (et dépendra de la configuration du proxy inverse et d'Apache).

jcaron
la source