.htaccess — $ _SERVER [‘HTTP_ACCEPT_LANGUAGE’] ведет себя как статическое переполнение стека

Я пытаюсь создать многоязычную страницу, я хочу, чтобы перенаправление пользователя на определенную страницу зависело от его языка (в случае, если файл cookie не настроен, если файл cookie существует, потому что пользователь выбрал ранее язык, на котором я буду игнорировать этот блок ) создание фиктивного файла для захвата языка через $ _SERVER [‘HTTP_ACCEPT_LANGUAGE’]:

<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE']
?>

Теоретически это должно вернуть фактический заголовок языка принятия для запроса. Но делать тесты на разных компьютерах с разными языками EN, IT, ES … (я проверил, что они отправляют свои языки как accept_language)

Я обнаружил, что если я впервые получу доступ к EN, независимо от того, сделаю ли я другой запрос на других языках, он останется на EN. То же самое, если первый запрос с IT или ES. Это не обновляется через некоторое время или после того, как я модифицирую фиктивный файл и загружаю его снова.

Насколько я вижу, ведет себя как статическая переменная, но в соответствии с PHP, док говорит, что он должен возвращать «фактический», и весь пример, который я вижу, чтобы сделать это многоязычным, предлагает сделать это таким образом.

На самом деле после часового тестирования я решил создать правило в .htaccess для перенаправления на нужный сайт, зависит от этого значения, и оно работает:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* /en/index.php [L]
RewriteCond %{HTTP:Accept-Language} (it) [NC]
RewriteRule .* /it/index.php [L]
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* /es/index.php [L]

так что-то не заставляет его работать в PHP.

  • У вас есть представление о том, что происходит?
  • Вы бы порекомендовали сохранить перенаправление .htaccess или вместо
    определить этот первый язык по php?

С уважением,

Pablo

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]