Разный результат при обращении к сайту с www и без него.

Главные вкладки

Аватар пользователя ws_admin ws_admin 15 марта 2010 в 17:51

Уважаемое сообщество, subj как-то в одной из тем однимался другими участниками, но тема не развилась. Убил уже кучу времени на ее решение, но пока безрезультатно, возможно, кто-то сталкивался:

На нескольких сайтах прикручена SAPE. Включен нормальный режим кеширования и установлен CacheRouter с кешированием по умолчанию в DB.

Некоторые новые ссылки не появляются на страницах без ручной очистки кэша. В лучшую сторону не влияет изменение прочих настроек, имеющихся в Управление-Конфигурация-Производительность(Быстродействие).

При этом наблюдается интересный эффект. По умолчанию адрес сайта без www, т.е. сайт.ru, если же анонимный пользователь набирает www.сайт.ru, то исчезнувшие ссылки отображаются, если же потом снова набрать сайт.ru, то снова не видны.

В настройках скрипта sape прописывал сайт и с www, не помогло. Не видит ссылки. Только чистить кэш.

Почему наличие www может так влиять на отображение страниц?

Кеширование отключать не хотелось бы, т.к. при отключении ошибки появляются уже из-за того, что некоторые странички долго грузятся и скрипт SAPE не дожидается окончания.

Комментарии

Аватар пользователя Azerot Azerot 15 марта 2010 в 18:12

Quote:
Уважаемое сообщество, subj как-то в одной из тем однимался другими участниками, но тема не развилась

Возможно это был я. У меня такая штука была почему-то только на одной, главной странице.
Причин проблемы так и не нашёл. Считаю, что какой-то глюк в системе кэширования. Проблему решил просто - после чистки кэша и захода анонимусом, чтобы страница закэширолась, я ручками в базе для главной страницы в таблице cache_page ставлю в expire 0 вместо -1 и таким образом запрещаю обновлять эту страницу вообще. До следующей ручной очистки кэша через админку всё работает.

Аватар пользователя ws_admin ws_admin 15 марта 2010 в 18:19

Azerot wrote:
Quote:
Уважаемое сообщество, subj как-то в одной из тем однимался другими участниками, но тема не развилась

Возможно это был я. У меня такая штука была почему-то только на одной, главной странице.
Причин проблемы так и не нашёл. Считаю, что какой-то глюк в системе кэширования. Проблему решил просто - после чистки кэша и захода анонимусом, чтобы страница закэширолась, я ручками в базе для главной страницы в таблице cache_page ставлю в expire 0 вместо -1 и таким образом запрещаю обновлять эту страницу вообще. До следующей ручной очистки кэша через админку всё работает.

Спасибо за совет! Занес в копилку. У меня, к сожалению, проблема с вложенными страницами, причем самыми разными, тем не менее как workaround буду иметь в виду.

Аватар пользователя ws_admin ws_admin 16 марта 2010 в 10:54

<a href="mailto:Oleksa@drupal.org">Oleksa@drupal.org</a> wrote:
А если попробовать в .htaccess задать обращение к сайту только одним из способов

Вы имеете в виду что-то типа вот такого авто-редиректа:
Как сделать, чтобы при открытии сайта http://domain.ru посетитель перенаправлялся на http://www.newdomain.ru?
Для того, чтобы включить перенаправление, необходимо в файл .htaccess, расположенный в директории www/htdocs/ добавить следующие строки:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain.ru$
RewriteRule ^(.*)$ http://www.newdomain.ru/$1 [L,R=301]

где:

domain.ru - имя вашего домена (перенаправление сработает и при наборе www.domain.ru)
www.newdomain.ru - адрес, на который Вы желаете перенаправлять посетителя.

Аватар пользователя ws_admin ws_admin 18 марта 2010 в 11:21

<a href="mailto:Oleksa@drupal.org">Oleksa@drupal.org</a> wrote:
А если попробовать в .htaccess задать обращение к сайту только одним из способов

Поставил 301 редирект, так чтобы сайт все время переключался на вариант с www. Не помогло.
Стал проверять.
1. Ссылки в файле links.db апдейтятся
2. Поискал в базе, увидел, что в кеше информация о ссылке уже есть ([BLOB - 13.4 КБ], Expire -1), но ссылка не показывается.
3. Информация о ссылке была найдена в кеше (Таблица : cache_page), оказалось, что там сохранен URL алиаса сайта, а не основное имя сайта. Другими словами.

сайт доступен по основному имени www.site.ru и по алиасу site2.ru
Если кто-то зашел на страницу, указав имя алиаса а ля site2.ru/node/100, то ссылка SAPE закешируется и будет видна, если набрать адрес site2.ru/node/100
Если же набрать www.site1.ru/node/100, то ссылки не будет видно.
И что с этим делать кроме ручной очистки кеша пока не знаю.

Аватар пользователя afishi afishi 16 марта 2010 в 9:51

кстати.. вот я ставил Organic groups - и в нем чтобы сайт окрывался только без www а если набираю www то переводил и открывал без него...
вот сейчас Organic groups убрали... как еще и где можно прописать, чтобы сайт открывался только без www ?

Аватар пользователя Azerot Azerot 18 марта 2010 в 12:03

Там всё гораздо интересней.
У меня было так: для анонимов сапа показывалась, для зареганых нет - ибо нафиг?
В итоге, хотя известно, что кэш работает только для анонимов, почему-то кэшировалась страница БЕЗ ссылок, т.е. как будто для зареганых. В какой момент это происходит я так и не понял.

Аватар пользователя ws_admin ws_admin 18 марта 2010 в 12:25

Azerot wrote:
Там всё гораздо интересней.
У меня было так: для анонимов сапа показывалась, для зареганых нет - ибо нафиг?
В итоге, хотя известно, что кэш работает только для анонимов, почему-то кэшировалась страница БЕЗ ссылок, т.е. как будто для зареганых. В какой момент это происходит я так и не понял.

Да, ситуация. Пока приходится ежедневно вручную сбрасывать кеш.

Аватар пользователя ws_admin ws_admin 18 марта 2010 в 12:55

Azerot wrote:
Там всё гораздо интересней.
У меня было так: для анонимов сапа показывалась, для зареганых нет - ибо нафиг?
В итоге, хотя известно, что кэш работает только для анонимов, почему-то кэшировалась страница БЕЗ ссылок, т.е. как будто для зареганых. В какой момент это происходит я так и не понял.

Появилась правда такая идея. У Друпала есть функция в блоке "Показывать блок если Если введённый PHP код возвращает значение TRUE".
Подумал, как должен выглядеть код, чтобы блок выводился только если запрос будет идти к сайту site1.ru?
т.е. как это написать на php? А ля если начало URL=site1.ru (т.е. хвост адреса с node/100 отбросить), то выводить блок со ссылками.

Аватар пользователя ws_admin ws_admin 9 июня 2010 в 17:06

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