Как вставить тег на все страницы статического сайта на html?

123
kminas
На сайте с 04.02.2007
Offline
106
#11
Милованов Ю.С:
Все файлы лежат в 1 папке?
Файлы так и называются fileName.htm?

<?php
$dir = dirname(__FILE__);
if ($handle = opendir($dir))
{
while (false !== ($file = readdir($handle))) {
if ($file != '.' AND $file != '..')
{
$fileInfo = explode('.', $file);
$ext = array_pop($fileInfo);
if ($ext == 'htm')
{
$content = file_get_contents($dir .'/' .$file);
$addText = '<head>\n\t<link rel="canonical" href="http://newsite.ru/' .$file .'"/>';
$content = str_ireplace('<head>', $addText, $content);
file_put_contents($dir .'/' .$file, $content);
}
}
}
closedir($handle);
}
?>

1) \n - новая строка, \t - табуляция. Добавить по вкусу.
2) За сохранность Ваших данных несете ответственность только Вы;)
3) Всегда делайте бэкапы!

Туповатс немного. Я понял, что $dir = dirname(__FILE__) FILE надо заменить на имя текущей страницы, а dirname это имя папки? А еще куда в код вставлять реальные названия?

IL
На сайте с 20.04.2007
Offline
435
#12
kminas:
Я понял, что $dir = dirname(__FILE__) FILE надо заменить на имя текущей страницы

ничего не надо менять... "оно само" всё работает

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#13
Dreamfall:
В общем помог php скрипт господина Милованова. Благодарствую.
Правда он не вставил переносы строк и не обработал папки (возможно это косяк денвера), но я просто скопировал его в папки, подправил пути и запустил оттуда, и в принципе цель достигнута.

Для виндоуса перенос строк - \r\n

Для никсов - \n

Для маков - \r

Поэтому, если делаете на винде - \n замените на \r\n

Подпись))
JK
На сайте с 06.04.2013
Offline
2
#14

Как я и говорил - скрипты + регулярки =)

siv1987
На сайте с 02.04.2009
Offline
427
#15

Добавлю и я свои 5 копеек

Немного модернизированный вариант который обработает вложенные папки


define(PATH, str_replace('\\', '/', dirname(__FILE__)));
scan(PATH);

function scan($dir)
{
$dh = opendir($dir);
while(false !== ($file = readdir($dh)))
{
if( in_array($file, array('.', '..')) ){
continue;
}

$filePath = $dir.'/'.$file;

if( is_dir($filePath) ){
scan($filePath);
}

$fileInfo = explode('.', $file);
$ext = array_pop($fileInfo);
if( in_array($ext, array('htm', 'html')) )
{
$canon = str_replace(PATH.'/', '', $filePath);
$canon = 'http://newsite.ru/'.$canon;

$content = file_get_contents($filePath);
$addText = "<head>\r\n\t<link rel=\"canonical\" href=\"{$canon}\" />";
$content = str_ireplace('<head>', $addText, $content);
file_put_contents($filePath, $content);

echo $canon.'<br />';
}
}
}
богоносец
На сайте с 30.01.2007
Offline
771
#16

Хоть бы кто напомнил ТС, что его цель не в каноникал и мета рефреше... а скорее в учёте истории старья. А то ведь пожалеет о содеянном. А искать по форуму такие сожаления не хочет.

D
На сайте с 17.04.2013
Offline
109
#17

Рефреш я ставить не буду пожалуй, опасная штука. А каноникал гугл рекомендует для миграции.

GOOGLE:
For some sites, there are legitimate reasons to duplicate content across different websites — for instance, to migrate to a new domain name using a web server that cannot create server-side redirects. To help with issues that arise on such sites, we're announcing our support of the cross-domain rel="canonical" link element.
http://googlewebmastercentral.blogspot.ru/2009/12/handling-legitimate-cross-domain.html

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

богоносец, что вы имеете в виду под учётом истории старья?

богоносец
На сайте с 30.01.2007
Offline
771
#18

Подразумевалась т.н. склейка или =Переезд сайта на новый домен - Яндекс.Помощь=

Но и для G, и для Я единого способа нет.

[Удален]
#19
Dreamfall:
А каноникал гугл рекомендует для миграции

Вы не верно всё поняли... ))

богоносец уже дважды вас на путь истинный наставляет

D
На сайте с 17.04.2013
Offline
109
#20

Понятно.

Для яндекса я использовал host.

Каноникал разве может повредить яндексу? Он его вообще не учитывает, если тот ведёт на другой домен.

Робот считает ссылку с атрибутом rel="canonical" не строгой директивой, а предлагаемым вариантом, который учитывается, но может быть проигнорирован.

Например, робот может не использовать указанный вами адрес, если:

Документ по каноническому адресу недоступен для индексирования.
В качестве канонического адреса указывается URL в другом домене или поддомене.
Вы указали несколько канонических адресов.

http://help.yandex.ru/webmaster/?id=1127756

Яндекс говорит, что директивы host ему достаточно, таким образом рекомендаций яндекса по переносу нарушено вроде бы не было.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий