Nginx устанавливает для HTTP_HOST значение punycode

У меня есть доменное имя в формате Unicode. Он настроен как punycode вserver_nameдиректива.

Когда я звоню$_SERVER['HTTP_HOST']в моем PHP-коде я получаю ту же версию punycode. Как настроить Nginx для установкиHTTP_HOSTвместо этого к значению Юникода?

В качестве исправления я вызываюidn_to_utf8($_SERVER['HTTP_HOST'], 0, INTL_IDNA_VARIANT_UTS46)в верхней части моего сценария. Но я бы хотел, чтобы это делалось автоматически вне кода моего сайта.

Ближе всего я нашел IDN и HTTP_HOST , но ему 10 лет и он предназначен для Apache.

1 ответ

Я не думаю, что в интерфейсе FastCGI, который используется между nginx и PHP, есть поддержка разных наборов символов.

Поэтому даже если бы nginx смог декодировать доменное имя в UTF-8, у него не было бы возможности правильно отправить его в PHP.

Лучше всего добавить декодированиеHTTP_HOSTзаголовок в ваш фронт-контроллер.

Другие вопросы по тегам