2 votes

apache2 mod_rewrite redirect sans corps http

J'utilise actuellement Apache mod_rewrite pour rediriger vers HTTPS, mais je voudrais supprimer le corps de la réponse.

Comment cela se passe actuellement :

Current response

Exemple : Comment je voudrais que ce soit

Desired response

Ma configuration de redirection :

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

1voto

MrWhite Points 11269

Vous pouvez définir un ErrorDocument personnalisé pour la réponse 301, dans lequel vous pouvez définir une réponse vide. (Bien que la spécification d'un "document d'erreur" personnalisé pour une non-erreur, c'est-à-dire pour toute autre chose qu'un statut 4xx ou 5xx, ne soit pas explicitement documentée).

Par exemple :

ErrorDocument 301 /errordocs/empty.html

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

/errordocs/empty.html est littéralement un document vide.

Alternativement, vous pouvez définir le ErrorDocument à un simple chaîne de caractères . Mais vous ne pouvez pas définir une chaîne entièrement vide, car Apache ne voit alors pas le deuxième argument et s'arrête avec une erreur : "ErrorDocument takes two arguments". Cependant, vous pouvez réduire cette chaîne à un seul caractère. Par exemple, pour n'envoyer qu'un trait d'union ( - ) dans le corps de la réponse :

ErrorDocument 301 "-"

Cependant, cela permet de définir le corps de la réponse pour les éléments suivants alle Réponses Apache 301. (Cependant, si cela se trouve dans le conteneur VirtualHost pour le port 80 dans la configuration du serveur, cela sera de toute façon limité aux redirections HTTP uniquement).

参考 Cette réponse à une question StackOverflow donne plus de détails sur renvoyer une réponse vide de la part d'Apache .

Cependant, comme @MichaelHampton l'a souligné dans les commentaires, si vous devriez envoyer un corps de réponse vide dans le cas d'une redirection est une autre affaire.

Il se trouve dans la configuration du serveur (fichier .conf).

A part : Si cela se trouve dans la configuration du serveur, alors vous devriez utiliser un simple mod_alias. Redirect dans le conteneur VirtualHost non-HTTPS (port 80), à la place de mod_rewrite. L'utilisation de mod_rewrite dans ce contexte, afin de vérifier explicitement la présence de HTTPS est inutile. Cela ne fait aucune différence pour le document d'erreur qui est renvoyé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X