Как сделать редирект страницы на другую

Как сделать редирект страницы на другую
Как сделать редирект страницы на другую
Как сделать редирект страницы на другую
Как сделать редирект страницы на другую
Как сделать редирект страницы на другую

Содержание

Наткнулся  на битую ссылку.   Ссылка была на мануал по настройке бэкапов для сайта.  Тема интересовала настолько, что полез в archive.org смотреть, что там за мануал такой.  Там обнаружил блог человека, который когда-то занимался  сайтостроительством, какими-то темами в интернете. Но видимо бросил всё это. Блог существовал до декабря 2013 года, потом еще год висела заглушка.  Я возьми да и проверь домен сайта. Он оказался свободным.  Дело в том, что меня интересовали подобные сайты давно, я время от времени захожу на telderi и присматриваю себе недорогой сайт IT-тематики для покупки. Пока ничего подходящего по цене/качеству не подобрал.

Зачем мне нужен такой сайт? Я вынашиваю план сделать что-то вроде слияния или поглощения.  Соединить такой сайт, с вот этим. Чтобы увеличить на нем трафик  и прочие ништяки.  Кто-то скажет — а как же диверсификация? Безусловно, диверсификация — дело хорошее. Но тут ещё диверсифицировать пока нечего, нужно сначала что-нибудь развить. И вот, видится мне идея слияния сайтов очень перспективной.

Итак, это всё предыстория. Задумал я найденный сайт восстановить.  Оказалось на нём около 300  страниц.  Зарегистрировал домен и принялся разыскивать инструмент для выкачивания сайта.



Чем восстановить сайт из веб архива?

Процедура-то нехитрая. Бери и качай.  Но дело осложняется тем, что страниц много, и все они будут в виде статических html-файлов.   Вручную качать замучаешься. Стал спрашивать у людей, которые таким делом занимались. Люди посоветовали r-tools.org. Он оказался платным. Стал гуглить, поскольку я-то знаю,  что это простая процедура, и платить за нее не хотелось, пусть и такую небольшую плату. Решение нашлось очень быстро в виде   приложения на ruby.  Как я и предполагал, всё очень просто, инструкция прилагается.

Устанавливаем утилиту для восстановления сайтов из archive.org

Недолго думая, устанавливаю всё на сервер и запускаю восстановление.

#устанавливаем руби:

apt-get install ruby

#Ставим сам инструмент:

gem install wayback_machine_downloader

Запускаем выкачивание сайта из веб архива

skachivanie-saita-iz-web-arhiva

wayback_machine_downloader http://www.site.ru --timestamp 20131209110704

 

Здесь в опции timestamp можно указывать отметку снапшота. Поскольку сайт может иметь десятки или сотни снимков в веб-архиве.  Я   указываю последний,  когда сайт был еще жив,  логично.  Утилита сразу же определяет количество страниц и выводит на консоль выкачиваемые страницы.

Все скачивается и  сохраняется, получаем россыпь статических файлов в папке.  Создаем у себя папку в нужном месте, и кладем туда выкачанные файлы.  Я люблю использовать rsync:

rsync -avh ./websites/www.site.com/  /var/www/site.com/

Остается только создать конфигурацию в nginx, дождаться обновления dns.

 

Предлагаю!

Если вы не хотите вдаваться в подробности и вам просто нужно восстановить сайт с чисткой кода, заменой или установкой счётчиков или баннеров, рекламных кодов, у меня есть для вас предложение.

Восстановить сайт из вебархива всего за 500 рублей:

Я принимаю заявки по контактам на vpsadm.ru и наживаюсь на решении ваших проблем с сайтами и серверами :) . А ещё предлагаю  воспользоваться новой интересной фриланс-платформой  Kwork.



Если вы с ней ещё не знакомы — рекомендую. Это биржа от компании Мирафокс, которую вы возможно уже знаете по другим проектам для вебмастеров (Telderi, Miralinks, Gogetlinks). На Kwork  не фрилансеры побираются по размещенным потенциальным заказчиком  предложениям, а сами выставляют предложения,  которые заказчик может выбрать.  «Фишка»  сервиса — базовая стоимость любого кворка (так называют предложения фрилансеров)  всегда 500 рублей.

Мой кворк, всего за 500 рублей я восстановлю вам сайт :)

Мой кворк, всего за 500 рублей я восстановлю вам сайт :)

Ну а для тех, кто хочет много букв с непонятными командами и скриптами, разобраться и делать самостоятельно — продолжаем.

Создание конфигурации nginx для восстановленного сайта

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

А вообще, минимальная конфигурация для статического сайта будет выглядеть примерно так:

config-nginx-static-site


server {
server_name site.ru www.site.ru .site.ru;
root /var/www/site.ru;
index index.html;

gzip on;
gzip_disable «msie6»;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location \.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
expires max;
log_not_found off;
}
}

Эта конфигурация заодно включает в себя настройки оптимизации для  Google Pagespeed — сжатие и кэширование в браузере.

Перезапускаем вебсервер:

service nginx restart

Как проверить сайт без смены DNS?

В принципе можно ждать обновления  dns после регистрации домена. Но хочется поскорее увидеть результат. Да и работу можно сразу начать.   Для этого есть нехитрый способ — записать IP сервера для нужного домена в файл hosts, запись такого вида:

10.10.1.1  site.ru

После этого нужный сайт станет открываться исключительно у вас на компьютере.

vosstanovlenniy-sait-iz-archiva

Вот так. Чувствую себя некромантом :)

site-necromancy

 

Сайт будет показываться ровно так, как видели его пользователи.  Все ссылки будут работать, поскольку у вас есть все нужные файлы.  Возможно какие-то из них будут битыми, где-то будет не хватать изображений, стилей или чего-нибудь ещё.  Но это не суть важно — ведь самое главное для любого сайта — контент.   А он, скорее всего,  сохранится.

Очистка кода восстановленного сайта

Но это ещё не всё.  Хотя можно и оставить в таком виде.   Но чтобы добиться лучшего эффекта, есть смысл немного причесать восстановленный сайт.   Это вообще самая сложная часть во всей этой затее.   Дело в том, что раз сайт будет показываться так, как видели его пользователи, в коде страниц будет куча всевозможного мусора.  Это в первую очередь  реклама, баннеры  и счётчики.  Также какие-то элементы, которые на статическом сайте ни к чему. К примеру, ссылка для входа в админку сайта. Формы для отправки комментариев, подписки, какие-нибудь  кнопки и другие элементы, доставшиеся в наследство от динамической CMS, на которой сайт работал раньше.  В моём случае это был WordPress.

Как удалить фрагменты html кода на множестве статических страниц?

Как же это всё можно убрать?  Очень просто.  Смотреть в коде — и просто удалять ненужное.  Легко сказать.  Но страниц у нас несколько сотен.  Поэтому тут нужна магия.

Удаляем сквозные элементы в коде статического сайта

Удаляем сквозные элементы в коде статического сайта

Вот так я убираю ссылку «Вход» на всех html-файлах в указанной папке:

find ./site.ru/ -type f -name '.html' -exec sed -i 's|<p id="top_info"> <a href="http://www.site.ru/wp-login.php">Вход</a></p>||g'
{} \;

Вот такой конструкцией можно убрать ВСЕ html-теги из файла. Самое простое.  У вас тогда получатся текстовые файлы

sed -e 's/<[^>]>//g'  test.html

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

Но мне это не подходит, я хочу сначала воссоздать сайт полностью и посмотреть как он будет оживать  и будет ли вообще.   Поэтому работа по очистке кода занимает у меня пару часов кропотливой работы. Я открываю страницы сайта,  отладчиком смотрю исходный код  страниц, нахожу ненужные мне javascript, баннеры, счетчики, формы.

Вот так я убираю счетчик Liveinternet cо всех страниц  моего статического сайта:

find site.ru/ -type f -name '.html' -exec sed -i '/<!--LiveInternet counter-->/,/<!--\/LiveInternet-->/d' {} \;

Вот так убираю подключение рекламного баннера:

find site.ru/ -type f -name '.html' -exec sed -i 's|<link type="text/css" rel="stylesheet" href="http://mixmarket.biz/uni/partner.css">||g' {
} \;

Несмотря на  конструкции, которые несведущему человеку могут показаться страшными — это довольно простые вещи, поскольку в  этом счетчике  есть уникальные теги-комментарии, по которым мы определяем часть кода для удаления, указав их в качестве паттернов.

В некоторых случаях приходится поломать голову, чтобы вырезать лишнее и не задеть нужное, ведь некоторые элементы могут повторяться на страницах.  Например, для удаления  счетчика Google Analytics пришлось сочинять вот такое:

Сначала удаляю строку <script type=»text/javascript»>  с которой начинается счетчик.  Эта команда удаляет  строку над паттерном var gaJsHost, поскольку мне нужно удалить её только в этом месте и не трогать нигде больше:

find site.ru/ -type f -name '.html' -exec sed -i -n '/var gaJsHost/{x;d;};1h;1!{x;p;};${x;p;}' {} \;

Теперь вырезаем остальную часть, которую становится легко идентифицировать по уникальным  паттернам в первой и последней строках:

find site.ru/ -type f -name '.html' -exec sed -i '/var gaJsHost/,/catch(err)/d' {} \;

Аналогичным образом я убираю форму добавления комментариев:

 

Зачищаю 4 строки с неуникальными закрывающими тегами после строки с уникальным паттерном:

find theredhaired.ru/ -type f -iname '.html' -exec sed -i '/block_links/{N;N;N;N;s/\n.//;}' {} \;

А теперь вырезаю довольно большой блок строк на 30, указав уникальные  паттерны его первой строки и последней:

find theredhaired.ru/ -type f -iname '.html' -exec sed -i '/<h2> Подписка/,/block_links/d' {} \;

Вот эти последние пару случаев можно конечно попытаться выпилить с помощью мультистрочных паттернов, но я их так и не осилил, сколько не гуглил. Примеров с multi-line находил много, но они все простые, где нету спецсимоволов, escape-символов (табы, переводы строки).

Удаляем счётчики, баннеры и формы с восстановленного сайта

Удаляем счётчики, баннеры и формы с восстановленного сайта

Возможно всю эту очистку будет проще сделать на php или даже perl,  для которого обработка текста это предназначение. Но я, к сожалению, оными не владею, поэтому  использую bash и sed.

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

Как массово редактировать тайтлы и другие элементы на статическом сайте?

Поскольку моя задача не просто воскресить сайт,  а добиться его индексации, ранжирования в поиске и даже получения трафика из поиска — мне нужно подумать о каком-никаком SEO.    Оригинальные тайтлы мне однозначно не подходят, поэтому я хочу их изменить.  В наследие от WordPress досталась схема   %sitename% » %postname%.  Тем более sitename у нас невнятный — сам домен сайта.   Самый простой вариант  выпилить первую часть тайтла.  Но это мне тоже не  годится.  Поэтому я поменяю эту часть тайтла на хитрый запрос. Вот так я это делаю:

zamena-taitlov-na-statichescom-saite

Как видите, множество проверок и итераций.  Но в итоге, тайтлы становятся такими, какими нужно.  Можно догадаться, что я затеял попытку собирать на этот сайт трафик по запросам о восстановлении сайтов из веб архива. Зачем мне это нужно — я собираюсь оказывать платную услугу по восстановлению таких сайтов.    Как видите, в данном случае довольно просто сделать замену. Можно было не заморачиваться несколькими вариантами, а подвести всё под один. Но мне захотелось убрать или поменять лишние символы, а раз уж вариантов оказалось несколько, то я и поменял их на несколько своих.  Такое вот  SEO.

Теперь я собираюсь добавить Яндекс Метрику во все html-файлы моего сайта.  А заодно перевести его со старой схемы www на  без www.

Как перевести статический сайт с www на без www?

Это делается простой заменой:

find ./ -type f -iname ‘.html’ -exec sed -i ‘s/http:\/\/www.site.ru/http:\/\/site.ru/g’ {} \;

После чего на всякий случай в конфигурации nginx вынесем вариант с www  в редирект:

server {
server_name www.site.ru;
return 301 $scheme://site.ru$request_uri;
}

Как создать карту сайта sitemap.xml для статического сайта?

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

Генерирую карту с помощью сервиса, который создаёт её из списка страниц.  Как получить такой список? Всё оттуда же, из консоли:

find site.ru/ -type f -iname ‘.html’|grep -v ‘site.ru/go\|wp-login\|wp-admin’|less

На выходе получаю чистенький список страниц и сразу же скармливаю его в сервис.   Я тут при генерации списка исключил кое-какой мусор.  go — это бывшие внешние ссылки ну и страницы админки, которые у нас всё равно закрыты в robots.txt.

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

Последний штрих. Я ведь собираюсь отслеживать свои успехи. Поэтому мне нужно обязательно добавить какой-нибудь счётчик. Я ставлю на свои сайты обычно и Google аналитику и метрику яндекса. Но работаю больше с метрикой,  analytics пользуюсь изредка для специфичных вещей.  Здесь же мне счетчик гугла  вообще не понадобится, по крайней мере первое время.

Итак, чтобы добавить во все страницы счётчик метрики, я воспользовался способом с выносом кода счётчика в отдельный js-файл.  Просто потому, что так будет проще добавить потом код его вызова на все страницы.  Создал счётчик, и записал его код в metrika.js

Теперь добавляю строку с его вызовом на все страницы перед закрывающим тегом body:

find site.ru/ -type f -iname ‘.html’ -exec sed -i ‘/<\/body>/i \
<script type=»text\/javascript» src=»\/metrika.js»><\/script>’ {} \;

Теперь проверяю, везде ли установилось:

find site.ru/ -type f -iname ‘.html’|xargs grep ‘metrika.js’|wc -l
173

И получаю неприятный сюрприз — установлено не везде.  Около сотни страниц упущено.    Это могло произойти только в том случае, если в каких то файлах нету тега </body>.   Смотрим:

find site.ru/ -type f -iname ‘.html’|xargs grep -L ‘</body>’|wc -l
119

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

find site.ru/ -type f -iname '.html'|xargs grep -L '</body>'|xargs sed -i '$ i\
> <\/body><\/html>'

Я делаю это одной строкой, чтобы указать паттерном именно теги в паре. Иначе, если я воспользуюсь  для добавления счётчика той же командой, что я уже сделал — то я продублирую вызов счётчика там, где он уже есть.  Чтобы этого избежать можно конечно удалить строку там где она есть и потом добавить её снова, но я просто укажу спаренный тег в виде паттерна и добавлю только в те файлы. Вот так:

find site.ru/ -type f -iname '.html' -exec sed -i '/<\/body><\/html>/i \
> <script type="text\/javascript" src="\/metrika.js"><\/script>' {} \;

Проверяю снова:

find theredhaired.ru/ -type f -iname '.html'|xargs grep 'metrika.js'|wc -l
266

Ну вот, 266 из 290 это уже лучше :)  Там оказалось еще что 30 страниц не попали под какой-то из скриптов из-за кривых имен с вопросительными знаками.    Я думаю мне достаточно и тех что есть :)

Что дальше?

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

Вот что получилось после очистки и правки страницы под свои нужды

Вот что получилось после очистки и правки страницы под свои нужды

Кроме того, через некоторое время я проведу анализ результатов, которых я достиг с этим сайтом.  Трафик,  лиды или что-то ещё.   Так что, следите за обновлениями на сайте, через 2-6 месяцев вы увидите продолжение истории. Покажу стату, если таковая будет и т. д. Если вы читаете эту статью спустя полгода, а ссылки на продолжение до сих пор нет — напомните мне об этом в комментариях, пожалуйста :)

Разобрались, не?

Если вы прониклись, во всём разобрались и собираетесь делать самостоятельно — низкий вам поклон и уважуха. Мне нравятся люди, которые хотят во всём разобраться и постичь.

Если же вы кроме хаоса в мыслях ничего не испытываете после прочтения, а решить задачу надо,  я отношусь со столь же большим уважением к тем, кто умеет находить профессионалов и просто делегировать свои задачи  :)

Позвольте мне стать богаче на 500 рублей от решения вашей задачи :)

Обращайтесь по контактам на vpsadm.ru или пойдёмте на удобную  фриланс-платформу  Kwork.

 

Мой кворк, всего за 500 рублей я восстановлю вам сайт :)

Мой кворк, всего за 500 рублей я восстановлю вам сайт :)

 

 

Как сделать редирект страницы на другую Как сделать редирект страницы на другую Как сделать редирект страницы на другую Как сделать редирект страницы на другую Как сделать редирект страницы на другую Как сделать редирект страницы на другую

Статьи по теме:



Как сделать реквизит для детских праздников

Поздравление для инны картинки

Ответное письмо на поздравления с юбилеем

Овечка поделка из пластилина

Оригинальные подарки своими руками из кофе