Вопрос на засыпку. Проблема в сочетании woocommerce + last modifed.
Всем привет! Очередная головная боль появилась, может кто подскажет? Дело вот в чем...
При установке заголовка Last Modifed на Woocommerce появляется серьезная проблема с авторизациями. То есть получается следующая картина: клиент заходит на сайт как гость, пошарился по нескольким страницам и потом авторизовался или зарегался не важно.
В итоге теперь ему браузер при переходе на эти же страницы показывает контент как незарегистрированному (так, как он просматривал ее как гость ранее). Но при переходе на страницу которую он не посещал как гость, авторизация снова появляется и сессия продолжается. Тоже самое получается при выходе из учетной записи.
То есть клиент нажал кнопку Выйти, сессия типа закончилась, переходит на страницу которую просматривал авторизованным и сессия начинает снова работать. То есть браузер получает код 304 и выдает ранее просмотренную страницу забивая на сессии. Кто-нибудь сталкивался с такой проблемой в магазинах или форумах?
Ребят, приму к сведению любую мысль или подсказку, даже не от гуру. Мне важен этот момент и хочется разобраться наконец с этим вопросом. Уже недели три бьюсь с этим заголовком. Все никак не подружимся мы с ним.
Нашел статью на форуме или что это... ну не важно, о подобной проблеме. Но там как я понял речь идет о каком-то другом движке. Советуют поставить заголовок следующего типа: @header("Cache-Control: private, must-revalidate");
Решил попробовать у себя. В функцион.пхп вставил, проверил заголовок передает нормально, почистил кэш в браузере, начал юзать по сайту. Проблема осталась. Так что, тем у кого подобная проблема на вукоммерц не пытайтесь, не работает. Раз там писали, что все же проблема не в коде ответа, а в особенностях кэширования браузером, я решил отключить кэширование в заголовках. И все заработало как надо!
Заголовки поменял вставив код в файл htaccess:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
После строки # END WordPress, кстати с этим я тоже помучился в свое время, куда что вставлять. Везде только пишут вставьте, а куда хрен поймешь.
В общем пользуйтесь кому надо, наверняка я не один такой шизанутый. :-)
if ( !is_user_logged_in() ) {
... you code
}
Постоянно сталкиваюсь с этим на американских серверах. Там походу малолетние индусы работают в поддержке, ни в зуб ногой, ничего толкового сказать не могут. Так я на многих серверах уже имею прямой доступ к технарям.
с Apache еще более менее работает, а вот Nginx надо корректно настроить.
Все правильно, пока сам не высушишь себе мозги, никто толком не посоветует. Рад за вас.