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

htaccess redirect изменяет кодировку HTML-ответа

Я установил сервер Apache 2.4 на AddDefaultCharset utf-8 в httpd.conf и моем .htaccess файл перенаправляет все без www и http к https://www.example.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https//www.example.com/$1 [R=301,L,NE]

Если я посмотрю на заголовок ответа HTTP, только трафик, отправленный на https://www.example.com генерирует ответ UTF-8. Трафик без www и http отвечает кодировкой ISO-8859-1.

Кто-нибудь знает, как обеспечить, чтобы все HTTP-ответы с перенаправлением URL-адресов были в UTF-8?

Казалось бы, это поведение по умолчанию, поскольку ответ перенаправления Apache кодируется как ISO-8859-1. Однако Apache позволяет подавлять в charset параметр в ответе, установив suppress-error-charset переменная окружения:

# set desired env variable to suppress iso-8859-1 charset
SetEnvIf Host ^ suppress-error-charset

Однако не может быть изменено на другую кодировку.

Ссылка:

Я нашел способ изменить кодировку вместо ее удаления:

Header always edit Content-Type 'iso-8859-1' 'utf-8'

Это будет применяться ко всем запросам, но если вы не используете ISO-8859-1, это не проблема.