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

12 3
D
На сайте с 17.04.2013
Offline
109
1829

Здравствуйте.

Имеется статический сайт на narod.ru. В связи с переездом на свой домен, неплохо было бы на каждую страницу старого сайта поставить в head метатег rel canonical

<link rel="canonical" href="http://newsite.ru/page1.htm"/> где "http://newsite.ru/page1.htm" адрес данной страницы по новому адресу, он же имя файла на диске.

Страниц довольно много и вручную займет немало времени. Можно ли как то автоматизировать этот процесс, проще говоря вся задача сводится к следующему:

надо обработать каждый HTML файл и добавить в него следующую строчку после тега <head>:
<link rel="canonical" href="http://newsite.ru/имя этого файла на диске.htm"/>

и так чтобы все файлы обработало. В общем может софт какой есть? В Dreamweaver вроде нельзя такое сделать.

JK
На сайте с 06.04.2013
Offline
2
#1

Врядли прямо специализированный софт под это найдёте. Советую покопать в сторону скрипты + регулярные выражения. Это даже быстрее наверно получится.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#2

Все файлы лежат в 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) Всегда делайте бэкапы!

Подпись))
богоносец
На сайте с 30.01.2007
Offline
763
#3
Dreamfall:
надо обработать каждый HTML файл и добавить в него следующую строчку после тега <head>:
<link rel="canonical" href="http://newsite.ru/имя этого файла на диске.htm"/>

Ну а вы сможете объяснить — зачем?

D
На сайте с 17.04.2013
Offline
109
#4
Милованов Ю.С:
Все файлы лежат в 1 папке?
Файлы так и называются fileName.htm?

Вообще файлы лежат в пяти разных папках, и в корне. Больше вложенности нет.

Файлы называются по разному, но все имеют расширение htm.

Ну а вы сможете объяснить — зачем?

Я уже писал в первом посте, это нужно для переноса сайта с narod.ru на свой домен второго уровня. /ru/forum/comment/11675951

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

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
JorikKot:
Врядли прямо специализированный софт под это найдёте.

Его как грязи. Первые софтины появились ещё до пхп и даже перла.

Гуглятся на раз.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
A
На сайте с 17.01.2012
Offline
12
#6

Полно бесплатного софта, который делает массовый поиск и замену в файлах. Гугл Вам в помощь.

Вся правда о работе в Харькове (http://work.kharkiv.ua)
D
На сайте с 17.04.2013
Offline
109
#7
Ario:
Полно бесплатного софта, который делает массовый поиск и замену в файлах. Гугл Вам в помощь.

Это не прокатит. Нужна не просто поиск и замена, или вставка одной и той же строки, а получение имени файла и вставка его в этот файл. И так для каждого файла, а их сотни. Думаете я не искал? Назовите хотя бы один софт, который это сделает.

В dreamweaver полно регулярных выражений для поиска и замены, которыми я пользовался с успехом, но тем не менее получить имя файла он не может.

---------- Добавлено 19.04.2013 в 15:02 ----------

Милованов Ю.С:
Все файлы лежат в 1 папке?
Файлы так и называются fileName.htm?

Спасибо.

Файлы лежат в корне и еще в пяти папках. Подпапок нет.

Называются все по разному, fileName.htm это просто для примера.

SeVlad
На сайте с 03.11.2008
Offline
1609
#8
Dreamfall:
Думаете я не искал? Назовите хотя бы один софт, который это сделает.

Плохо искал. Имя файла подставлять могут не многие, но многие. TextPiePro например.

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

Ок, попробую его.

---------- Добавлено 19.04.2013 в 16:17 ----------

Честно говоря покопавшись, не нашел там вставки имени файла.

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

В общем помог php скрипт господина Милованова. Благодарствую.

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

12 3

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