Код состояния HTTP для языкового перенаправления

Интересно, какой код состояния HTTP мне нужно отправлять при перенаправлении языков.

У меня есть следующий php-код для перенаправления через заголовки HTTP на наиболее важный язык в заголовке браузера Accept-Language.

 0.8
        $langs = array_combine($lang_parse[1], $lang_parse[4]);

        // set default to 1 for any without q factor
        foreach ($langs as $lang => $val) {
            if ($val === '') $langs[$lang] = 1;
        }

        // sort list based on value 
        arsort($langs, SORT_NUMERIC);
    }
}

// look through sorted list and use first one that matches our languages
foreach ($langs as $lang => $val) {
    if (strpos($lang, 'ca')===0) {
    header("location: ca/");
    exit;
    } else if (strpos($lang, 'es')===0) {
    header("location: es/");
    exit;
    } 
  echo "$lang => $val
"; } // show default site or prompt for language header("location: en/"); ?>

Связанный вопрос: Статус HTTP для функционального перенаправления

Может быть, 300, 301, 302, 303? Почему?

ИЗМЕНИТЬ

Google недавно опубликовал это: http://googlewebmastercentral.blogspot.com/2011/12/new-markup-for-multilingual-content.html

Я обнаружил следующее:

HTTP STATUS 300 Multiple Choices

Запрошенный ресурс соответствует любому из набора представлений , каждое из которых имеет свое собственное местоположение, и переговоры, управляемые агентом - информация (раздел 12) предоставляется для того, чтобы пользователь (или пользовательский агент) мог выбрать предпочтительное представление и перенаправить свой запрос в это место.

Если это не запрос HEAD, ответ ДОЛЖЕН включать объект , содержащий список характеристик ресурсов и местоположений из , который пользователь или пользовательский агент может выбрать наиболее подходящий . Формат объекта определяется типом мультимедиа, указанным в поле заголовка Content - Type. В зависимости от формата и возможностей

пользовательского агента выбор наиболее подходящего варианта МОЖЕТ быть выполнен автоматически. Однако эта спецификация не определяет какого-либо стандарта для такого автоматического выбора.

Если сервер имеет предпочтительный выбор представления, он ДОЛЖЕН включить конкретный URI для этого представления в поле Location ; пользовательские агенты МОГУТ использовать значение поля Location для автоматического перенаправления . Этот ответ кэшируется, если не указано иное.

И это:

Ошибка HTTP 300 - несколько вариантов выбора

Введение

Ваш веб-сервер считает, что URL-адрес, предоставленный клиентом (например, ваш веб-браузер или наш робот CheckUpDown), не является достаточно конкретны, и необходимо сделать дальнейший выбор из ряда вариантов.

Обычно это тот случай, когда URL-адрес представляет собой группу высокого уровня, из которой необходимо сделать выбор на более низком уровне, например каталог , в котором пользователь должен выбрать определенный файл для доступа.

300 ошибок в цикле HTTP

Любой клиент (например, ваш веб-браузер или наш робот CheckUpDown) проходит через следующий цикл, когда он связывается с веб-сервером:

Получить IP-адрес от IP-имя сайта (URL-адрес сайта без начального http: //). Этот поиск (преобразование IP-имени в IP-адрес ) обеспечивается серверами доменных имен (DNS). Откройте соединение сокета IP с этим IP-адресом. Запишите поток данных HTTP через этот сокет. Получите поток данных HTTP обратно от веб-сервера в ответ. Этот поток данных содержит коды состояния, значения которых определяются протоколом HTTP. Проанализируйте этот поток данных на наличие кодов состояния и другой полезной информации. Эта ошибка возникает на последнем шаге выше, когда клиент получает код состояния HTTP, который распознает как "300".

Исправление 300 ошибок - общее

Первое, что вам нужно сделать, это проверить свой URL в веб-браузере. Если вы видите какую-то веб-страницу, предлагающую вам дальнейшие действия / варианты, то ваш URL в его нынешнем виде недостаточно подробен для обработки веб-сервером.

Исправление 300 ошибок - CheckUpDown

Вы никогда не увидите эту ошибку в своем аккаунте CheckUpDown, если предоставили нам URL верхнего уровня (например, www.isp.com) для проверки. Если это действительно для URL верхнего уровня, весьма вероятно, что программное обеспечение веб-сервера было неправильно запрограммировано или настроено. Если вы предоставили нам низкоуровневый URL (например, www.isp.com/products/index.html) для проверки, то, вероятно, этот URL недоступен даже через веб-браузер .

Первое, что вам следует сделать, это проверить свой URL-адрес в веб-браузере. Если вы видите разумную веб-страницу, это может указывать на дефект в нашем программном обеспечении. Однако, если вы видите какую-то веб-страницу, предлагающую вам дальнейшие действия / варианты выбора, значит, ваш URL не подходит для нашей проверки, потому что наша система не может сделать такой выбор.

Свяжитесь с нами напрямую (желательно по электронной почте), если вы обнаружите 300 ошибок. Только мы можем решить их за вас. Если в нашем программном обеспечении обнаружится дефект, мы его исправим. Если, однако, ваш URL-адрес принципиально не подходит для использования нами , вам необходимо изменить его в своей учетной записи CheckUpDown (для начала нажмите кнопку "Управление").

19
задан Community 23 May 2017 в 11:54
поделиться