2009-12-30 1 views
0

Это следующее к моему вопросу вчера: What is the function of the "Vary: Accept" HTTP header?согласования содержания и HTTP заголовков в PHP

У меня есть .php, который может быть подан с различными типами MIME. Для этого я использую HTTP-заголовок «Vary: Accept» (который подтвержден как правильный). Но что, если один и тот же документ (с тем же URL-адресом) можно обслуживать на многих языках (и эта страница может быть кэширована прокси-серверами)? Я знаю, что это плохой дизайн, но иногда это может произойти. Что в этом конкретном случае было бы способом сделать это.

J.J. дал ссылку (http://www.w3.org/Protocols/HTTP/Issues/vary-header.html) для обсуждения, где кто-то хотел использовать заголовок Вари HTTP для документа, который может быть подан на двух разных языках:

Для запроса/вариант сценария вас перечисленных сервер НЕ ДОЛЖЕН БЫТЬ ИСПОЛЬЗОВАНИЕ VARY: Извините, что крикнул, но я хочу, чтобы он был реальным. Вары строго для тех случаев, когда это безнадежно или слишком сложные для прокси-сервера для повторить то, что сервер будет делать (кроме хранения заголовка и делать строгого запрос заголовок равенства сравнений на последующих запросах).

Я думаю, что решение лежит в ссылке, предоставленной J.J., но я не уверен, что это такое и как реализовать его в PHP.

Спасибо за ваши огни!

ответ

0

Я думаю, что если вы служите на нескольких языках через тот же URL, без GET или POST ценности, основанные только на заголовке Accept-Language, то вы должны использовать Vary.

Если вы используете аргументы GET, то вам не нужно меняться, просто установите заголовки кеширования правильно.

Если вы хотите использовать один и тот же документ, но можете изменять URL-адреса, вы можете использовать переменную окружения PATH_INFO для эмуляции других URL-адресов, но с использованием того же документа.

Его схема заголовков URI работает только в том случае, если у вас разные URL-адреса.

+0

Фактически в URL есть либо $ _GET (в этом случае разные URL-адреса), либо скрытая языковая переменная $ _GET, отправленная Apache (через .htaccess - в этом случае тот же URL-адрес). Можете ли вы рассказать о своих параграфах 2 и 3. Не уверен, что я понимаю ... – AlexV

+0

Все еще ждет некоторых разъяснений ... – AlexV

+1

Если разные аргументы GET отправляются по проводу, то они разные URL-адреса, и у вас нет беспокоиться о Вари. PATH_INFO позволяет читать дополнительные элементы пути к скрипту: /foo.php/some/more/info будет иметь PATH_INFO =/некоторые/более/информацию для кода внутри foo.php –

Смежные вопросы