Сентябрь 20, 2009

Perl'овка

Perl'овка

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

Итак, я взял контент в виде over 9000 статичных страниц, разместил на своем хостинге, создал автоматически проект для AllSubmitter, автоматически прогнал его по базе с обратками, собранными этой программой. Ей-же получил список страниц с ссылками на свой СДС, и запулил в аддурелку. Все это было проделано 1 сентября.

20 дней спустя я проверил индексацию сайта. Нашлось 4k с копейками страниц в индексе!

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

На все я потратил ~6$ (ушло в антикапчу, за инвайтами — ко мне в камменты). Вобщем я потратил на этот сайт 1 час времени и пару копеек денег. А получил 4k страниц — несомненный profit!

Теперь возник вопрос, а как же добавить все эти страницы в сапу? FTP я не могу дать, да и глупо это — грузить сервак лишними движениями. Остался единственный вариант — вставить код сапы через SSI в каждую страницу перед </BODY> и получить профит. Сам SSI выглядит так:

<!--#include virtual="/static/adv.php" -->

Соответственно в директории /static должен быть файл adv.php, в котором будет выполняться код сапы. При этом PHP должен обрабатываться через mod_php, а html файлы через фильтр Includes. Так как у меня на хостинге PHP по умолчанию работают через fastcgi, то мне пришлось создать такой вот .htaccess, отрывающий PHP от fastcgi и передающий в mod_php:

RemoveHandler php                                                             
RemoveHandler application/x-httpd-php                                         
<FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$">                    
AddHandler application/x-httpd-php .inc .php .php5 .phtml                     
AddHandler application/x-httpd-php-source .phps                               
</FilesMatch>                                                                 
AddType text/html .php
Options +Includes
AddType text/html .html
AddOutputFilter INCLUDES .html

Первая часть передает PHP в mod_php, вторая обрабатывает html файлы фильтром Includes. Отлично, осталась самая малость — вставить во все html страницы вызов php файла.Но как же вставить в каждую страницу этот код? Не руками же делать?

И тут на помощь приходит Perl, код которого читабелен точно также, как тарелк перловой каши на картинке. Не буду утомлять вас регекспами, в которых я и сам очень слаб, вот код в одну строку, который добавляет include код во все html файлы в текущей директории и переименовывает старый вариант в *.old:

perl -pi.old -e 's/\<\/BODY\>/\<\!--\#include virtual=\"\/static\/adv.php\"\ --\>\x0A\<\/BODY\>/g' *.html

Вот и все. Выглядит ужасно, но работает :)




read comments (13 комментариев)

13 комментариев to “Жесткая перловка или вставляем сапу в html файл”

  1. ApocX Says:

    Скажу одно, что ты слишком много телодвижений сделал с аддурилкой и прочими ссылкодобавлениями, для Яндекса было достаточно добавления главной страницы, и за 20 дней он бы и так все проиндексил =)

  2. Одесский Сисадмин Says:

    Я же не просто ради индксации сабмитил, мне еще PR не повредит

  3. nameless Says:

    и сколько можно извлечь из 4к страниц в индексе (извините, ламер, интересно же)?..

  4. yaman Says:

    а не проще ли было пхп-обработчик на хтмл-файлы повесить, чем огород городить?

    и кстате, вместо перла можно использовать Словогрыз — нагляднее так

  5. Одесский Сисадмин Says:

    Не проще — он по хидерам и через ? будет засвечен

    А спиногрыза у меня на серваке нет

  6. Горный Оптимизатор Says:

    Специально для замены куска текста в файле написал программа под винду.

    Заменил бы текст и делов то.

  7. Одесский Сисадмин Says:

    У меня на сервере не винда

  8. dofollowblog Says:

    По большому счету, из 4000 страниц можно извлечь столько же, сколько и из 1000, просто их все не раскупят. Но, во-первых, больше страниц дает какое-то разнообразие, ну и процент внешних ссылок все же уменьшается. Да, 20000 страниц — еще лучше :)

  9. Seobomj Says:

    Еще один мегасателлит?)))

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

  10. Одесский Сисадмин Says:

    Да какой там мегасателлит — натырил контента и залил

  11. Штанд Says:

    Класс! Афтару респект!

  12. Nataly Says:

    вариант интересен, но я бы сделала по другому, локально вставила б на всех файлах код, зазиповала и скриптом на сервере извлекла. от силы это 20 мин времени. может я и тупая но так мне кажется быстрее и продуктивнее. ;)

  13. Одесский Сисадмин Says:

    А я скриптом сделал за 30 секунд. И еще — я контент качаю прямо с сервака, у меня дома не такой жирный канал чтоб туда-сюда качать