apache2 mod_rewrite redirecionar sem http corpo [duplicado]

1

Atualmente estou usando o mod_rewrite do Apache para redirecionar para HTTPS, mas eu gostaria de remover o corpo da resposta.

Como está atualmente:

Exemplo:comoeugostariaquefosse

Minha configuração de redirecionamento:

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

2 respostas

1

Você pode definir um ErrorDocument personalizado para a resposta 301, na qual você pode definir uma resposta vazia. (Embora a especificação de um "documento de erro" personalizado para um não-erro, ou seja, para algo diferente de um status 4xx ou 5xx, não seja explicitamente documentada.)

Por exemplo:

ErrorDocument 301 /errordocs/empty.html

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

Em que /errordocs/empty.html é literalmente um documento vazio.

Como alternativa, você pode definir o ErrorDocument para uma string simples . Mas você não pode definir uma string inteiramente vazia, pois o Apache não vê o segundo argumento e aborta com um erro: "ErrorDocument leva dois argumentos". No entanto, você pode reduzir isso para um único caractere. Por exemplo, para enviar apenas um hífen ( - ) no corpo da resposta:

ErrorDocument 301 "-"

Isso, no entanto, define o corpo da resposta para as respostas do all Apache 301. (No entanto, se estiver no contêiner VirtualHost para a porta 80 na configuração do servidor, isso será restrito aos redirecionamentos somente HTTP de qualquer maneira).

Referência: Esta resposta a uma pergunta do StackOverflow entra em mais detalhes sobre retornando uma resposta vazia do Apache .

No entanto, como @MichaelHampton apontou nos comentários, se você deveria enviar um corpo de resposta vazio no caso de um redirecionamento é outro assunto.

It is in the server config (.conf file)

Como: Se estiver na configuração do servidor, você deve usar um mod_alias Redirect simples no contêiner VirtualHost não-HTTPS (porta 80), em vez de mod_rewrite. Usando mod_rewrite neste contexto, para verificar explicitamente a variável de servidor HTTPS , é desnecessário. Isso não faz diferença para o documento de erro retornado.

    
por 04.04.2018 / 21:08
1

Você pode definir apenas um redirecionamento simples:

<VirtualHost *:80>
  ServerName example.com
  Redirect 301 / https://example.com/
</VirtualHost>
    
por 04.04.2018 / 21:31