Обрабатывать данные ДО 301 Редирект?

0

Итак, я работал над сокращением ссылок на PHP (я знаю, что нужно миру). В основном, когда страница загружается, php определяет, куда ей нужно идти, и отправляет 301 заголовок для перенаправления браузера, например...

Header( "HTTP/1.1 301 Moved Permanently" );
header("Location: http://newsite.com";

Теперь я пытаюсь добавить отслеживание в свои перенаправления и вставить некоторые пользовательские аналитические данные в таблицу MySQL до того, как произойдет перенаправление. Он отлично работает, если я не укажу тип перенаправления и просто использую:

header("Location: http://newsite.com";

Но, конечно, как только вы добавляете в заголовок 301, ничего больше не обрабатывается. Фактически, по первому запросу он отправляет данные в MySQL, но при любых последующих запросах нет связи с базой данных.

Я предполагаю, что это проблема кэширования браузера, как только она увидит 301, она решает, что они не являются причиной разбирать что-либо в будущих запросах. Но знает ли кто-нибудь, есть ли способ обойти это?

Мне бы хотелось сохранить его как 301 для целей SEO (я считаю, что если вы не укажете, что он по умолчанию отправляет 404?).

Я думал об использовании .htaccess для добавления файла на страницу, которая будет выполнять работу MySQL, но с 301, не будет ли это просто проигнорировано?

В любом случае, я не уверен, есть ли какое-либо решение, кроме использования другого типа перенаправления, но я готов отказаться от него. Таким образом, любые предложения будут высоко оценены. Спасибо!

Теги:
redirect
http-status-code-301

3 ответа

2
Лучший ответ

Попробуйте добавить следующее перед первым заголовком; это должно предотвратить кэширование на типичных страницах, но я не уверен, работает ли он для перенаправления:

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Thu, 1 Jan 1970 00:00:00 GMT");
  • 0
    RFC 2616 говорит: «Этот ответ кэшируется, если не указано иное», поэтому он, вероятно, будет работать.
  • 0
    Это работает отлично, спасибо!
0

Вы должны использовать перенаправление по умолчанию 302, которое является временным перенаправлением и не будет кэшироваться.

301 - постоянная переадресация, и большинство браузеров кэширует ее.

0

Объяснение приведено в описании кода 301: "Перемещено Постоянно". Вы специально сообщаете браузеру, что новая страница является постоянным новым местоположением, и поэтому нет причин для этого снова посетите старый URL.

Вместо этого используйте статус 303 См. другой. Это примерно такое же значение (в том, что оно перенаправляет посетителя в другое место), но "не должно" кэшироваться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню