Maybe the question is a little lamer, but still ask. Who knows what about this: does the CMS 1C-Bitrix correctly transfer the headers (such as Last-Modified, Expires, etc.)? The question basically relates to SEO.
2 answers
Yes, it's okay, register in the template
<?$APPLICATION->ShowMeta("keywords")?> <?$APPLICATION->ShowMeta("description")?>
between <head>
, and in the description of the page bring your keywords.
The Last-Modified bitrix header is out of the box. This is one of the "SEO-problems" bitrix. Discussion of this issue is conducted on the developer forum - http://dev.1c-bitrix.ru/support/forum/forum6/topic8100/
Here is the code I use (it works in the case of NGINX). In order not to modify the kernel, insert this part of the code into /bitrix/admin/php_interface/init.php.
<? AddEventHandler('main', 'OnEpilog', array('CBDPEpilogHooks', 'CheckIfModifiedSince')); class CBDPEpilogHooks { function CheckIfModifiedSince() { GLOBAL $lastModified; if (!$lastModified) $lastModified=time()-1000; if ($lastModified) { header("Cache-Control: public"); header('Last-Modified: '.gmdate('D, d MYH:i:s', $lastModified).' GMT'); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModified) { header('HTTP/1.1 304 Not Modified'); exit(); } } } } ?>
The $ lastModified global variable defines the page modification time.
For an item's detailed view page, you can define it like this:
1) as a result_modifier.php of the detailed view component template, save the TIMESTAMP_X in the component cache:
$cp = $this->__component; // объект компонента if (is_object($cp)) $cp->SetResultCacheKeys(array('TIMESTAMP_X'));
2) in the component_epilog.php of the same template, we define the $ lastModified variable:
GLOBAL $lastModified; if (!$lastModified) $lastModified = MakeTimeStamp($arResult['TIMESTAMP_X']); else $lastModified = max($lastModified, MakeTimeStamp($arResult['TIMESTAMP_X']));
You can correctly check the Last-Modified field here: http://www.bertal.ru/index.php?ex=1