Назад | Перейти на главную страницу

перенаправление apache2 mod_rewrite без тела http

В настоящее время я использую Apache mod_rewrite для перенаправления на HTTPS, но я хотел бы удалить тело из ответа.

Как сейчас:

Пример: как бы я хотел, чтобы это было

Моя конфигурация перенаправления:

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

Вы можете определить собственный ErrorDocument для ответа 301, в котором вы можете установить пустой ответ. (Хотя указание настраиваемого «документа об ошибке» для не-ошибки, т. Е. Для чего-либо, кроме статуса 4xx или 5xx, явно не документировано.)

Например:

ErrorDocument 301 /errordocs/empty.html

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

куда /errordocs/empty.html буквально пустой документ.

В качестве альтернативы вы можете установить ErrorDocument на равнину строка. Но вы не можете установить полностью пустую строку, поскольку тогда Apache не видит второй аргумент и завершает работу с ошибкой: «ErrorDocument принимает два аргумента». Однако вы можете сократить это до одного символа. Например, чтобы отправить просто дефис (-) в теле ответа:

ErrorDocument 301 "-"

Тем не менее, это устанавливает тело ответа для все Ответ Apache 301. (Однако, если это находится в контейнере VirtualHost для порта 80 в конфигурации сервера, то в любом случае это будет ограничено перенаправлением только для HTTP.)

Ссылка: Этот ответ на вопрос StackOverflow более подробно описывает возврат пустого ответа от Apache.

Однако, как отметил @MichaelHampton в комментариях, следует ли вам отправлять пустое тело ответа в случае перенаправления другое дело.

Он находится в конфигурации сервера (файл .conf)

В стороне: Если это есть в конфигурации сервера, вам следует использовать простой mod_alias Redirect в контейнере VirtualHost без протокола HTTPS (порт 80) вместо mod_rewrite. Используя mod_rewrite в этом контексте, чтобы явно проверить HTTPS переменная сервера, не нужна. Это не влияет на возвращаемый документ об ошибке.