Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Last modified_важно для индексации


Recommended Posts

А кто пробовал этот модуль?

https://opencartforum.com/files/file/1444-last-modified-if-modified-since-304-not-modified-seo-оптимизация/

 

В возможностях написано что:

1. Выводит дату последней модификации для страниц товаров, категорий и статьей, теперь и для главной страницы.
2. Меняет дату последней модификации товаров.
3. Меняет дату последней модификации категорий.
4. Меняет дату последней модификации статей.

 

Есть смысл его покупать?

А то в теме модуля увидел комментарий от CaptainPower и что то теперь в замешательстве Я.

Подскажите кто разбирается полезен ли тот модуль или нет?

Спасибо

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
<?php
$num=mt_rand(2000,10000);
$LastModified=gmdate("D, d M Y H:i:s \G\M\T", time()-$num);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); 
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $num) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
?>

В корне неверное предложение

Заголовок нельзя посылать после начала вывода

 

А вот в самом начале файла header.tpl, перед <!DOCTYPE более-менее законное действие.

 

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

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

в идеале добавить поля date_modified в нужные таблицы (например производителей, статей, для главной придумать, и пр.) и менять там дату при условии изменения контента, и никаких тогда рандомов не надо

Надіслати
Поділитися на інших сайтах

  • 11 months later...

Подскажите, как исправить:

 

Expires: Thu, 19 Nov 1981 08:52:00 GMT

 

Тоесть отображает старую дату, хотя  Last modified работает корректно....

Змінено користувачем seolink
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);
указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
По правде говоря, Ваш способ единственный честный и логичный. Все остальные, включая модули продаваемые на этом форуме - это чистой воды шарлатанство. Я думаю, что с такими модулями и до бана в поиске недалеко, банально за вранье. В общем не знаю насколько он правильный с точки зрения места его размещения, но работу свою выполняет. Спасибо!)
Надіслати
Поділитися на інших сайтах

  • 1 month later...

по аналогии стоит сделать для категорий, статей и прочего, где есть поле date_modified

По аналогии не выходит - модели Категорий, Статей и прочего не просят date_modified из базы.

Надіслати
Поділитися на інших сайтах


прочел всю тему, но так и не понял (не увидел) готового оптимального решения данного вопроса... только споры и предположения, а кто-то может предожить эфективное и правильнео решение данного вопроса?

 

и еще вопрос, код который в 1-м посте, что он делает? он выдает роботу информацию, что страница изменилась, даже если она не изменилась? или как код работает? что он делает?

или он честно сообщает роботу о изменении страницы, если она была изменена, а если нет - то - сообщает что не было изменений, так?

 

у меня сайт большой, почти 100 000 страниц, сейчас меню карточки товара с переиндексацией туговато.... может поможет, только не пойму что и как?

Надіслати
Поділитися на інших сайтах


 

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

вставил этот код, результат

 

 

Результат: провалено

Сайт ******* отдал время последней модификации, но не отреагировал на If-Modified-Since

 

почему так?

Надіслати
Поділитися на інших сайтах


Аналогично ставится для категорий, заменить $product_info на $category_info

Если в журнале появляются ошибки типа: Undefined index: date_modified

То не пугаемся, просто робот обратился к категории, которая не существует (отключена).

а можно готовый кусок кода и подсказку в каком месте и в каком файле вставить нужно?

Надіслати
Поділитися на інших сайтах


и еще вопрос:

а как это дело будет дружить с кешерами, когда страница отдается из кеша?

 

и еще вопрос, поставил код, от фрилансера, а как теперь искуственно для всех товаров изменить дату изминения, чтобы все товары были вроде как изминенные - у меня почти так сейчас и есть, перезиливаю новые карточки товара.... 

 

не сильно хочется тысячи товаров руками опять в админке что-то изменять и пересохранять... как автоматом для категорий товара или всех товаров единоразово изменить эту дату?

Надіслати
Поділитися на інших сайтах


почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еще раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

Надіслати
Поділитися на інших сайтах


почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еще раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

 

Наверно вы используете кэш. При первом посещение страницы вы видите не кешированую версию страницу, а при втором посещение данные беруться из кэша, но без Last-Modified.

Подобная проблема была в opencart-lightning, автор сделал гениальное решение. Last-Modified теперь выводится через его модуль. Хранится хэш каждой страницы, в зависимости от него и меняется дата.

 

Брать Last-Modified из даты редактирования категории/товара - правильно, но не совсем. Купили последний товар, добавили новый комментарий, изменили что-то в шаблоне - Last-Modified будет стоять старый. 

Надіслати
Поділитися на інших сайтах


 

Подобная проблема была в opencart-lightning, автор сделал гениальное решение. Last-Modified теперь выводится через его модуль. Хранится хэш каждой страницы, в зависимости от него и меняется дата.

Не знаю, что там у автора

 

Но время хранения кеша ограничено, например по дефолту - 1 час. т.е и Last-Modified будет только с часовым периодом

 

 

почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еще раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

 

 

Наверно вы используете кэш.

 

И что? кешируются данные из базы, и  в том числе, возможно, data_modified

Надіслати
Поділитися на інших сайтах

решения Last-Modified для сайта?

можно прикрутить там где есть data_modified

А это товары и возможно, модульные блоги/новости

 

Но я уже неоднократно спрашиваю

- какой смысл в этом заголовке, если страница имеет динамический контент в виде модулей.

Надіслати
Поділитися на інших сайтах

Как вариант, это

 

Добавить в модели information, category, product

в методах add, edit, delete, запись в некую конфигурационную переменную последнюю дату изменений

И отдавать ее

Надіслати
Поділитися на інших сайтах

и этот вопрос, остался без ответа:

 

Результат: провалено

Сайт ******* С, но не отреагировал на If-Modified-Since

 

почему не отреагировал на if-modifided-since?

и вообще что это такое if-modifided-since?

Надіслати
Поділитися на інших сайтах


  • 2 months later...

в производителях убрала, но вторая ошибка все равно выходит

014-02-08 21:12:30 - PHP Notice:  Undefined variable: catalog_info in /home/srv359/с.ru/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 76

 

У меня примерно из этой же области, к сожалению ( Ошибка в Журнале:

 

Cannot modify header information - headers already sent by (output started at /home/a/annval/tv-atribut.ru/public_html/index.php:107) in /home/a/annval/tv-atribut.ru/public_html/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 109

 

В vqcache там вот такие строчки:

 

        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
 
Подскажите, пожалуйста, никто не разобрался как убрать подобную ошибку?
Спасибо большое!
Змінено користувачем AnnValder
Надіслати
Поділитися на інших сайтах


https://opencartforum.com/topic/23359-last-modified-vazhno-dlia-indeksatcii/?do=findComment&comment=178294
это рабочий вариант, но только для товара. для категорий и везде где есть date_modified делать по аналогии

siniy, нужно проверить два условия
1. 

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {

2. 

if ($modified_since >= $date_modified) {
Надіслати
Поділитися на інших сайтах

а как это дело будет дружить с кешерами, когда страница отдается из кеша?

 

кешер скорее эти заголовки не будет учитывать. но лучше спросить у автора кешера

Надіслати
Поділитися на інших сайтах

Но я уже неоднократно спрашиваю

- какой смысл в этом заголовке, если страница имеет динамический контент в виде модулей.

 

по моему смысл более чем очевиден

эти заголовки must have любой магазин

            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
Надіслати
Поділитися на інших сайтах

  • 1 month later...

На ошибку типа: 

 

2015-10-27 5:10:27 - PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/a/annval/tv-atribut.ru/public_html/index.php:107) in /home/a/annval/tv-atribut.ru/public_html/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 175

 

следует забить, я так понимаю? Или есть все-таки возможность исправить, подскажите, пожалуйста!

 

Строка 175 такая: header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Добавил код от freelancer (octore 1.5.5.1.2)

Проверка If-Modified-Since : Результат: отлично.

Но если посмотреть в firebug Firefox на вкладке "сеть" всегда отдаётся код 200, т.е. страница всегда грузится с сервера 

4ae27834639dt.jpg

   Если посмотреть, например, сайт wikipedia при навигации по страницам стрелками вперёд-назад, то страница берётся из кэша броузера

] 5c3a2115f342t.jpg

Если обновить страницу, отдаётся 304 Not Modified, страница берётся из кэша

] 1eba104c715at.jpg

 Как сделать, чтоб и в octore старые страницы брались из кэша браузера?

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.