воскресенье, 20 сентября 2009 г.

Жесткая перловка или вставляем сапу в html файл

[Одесский Сисадмин]

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

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

Запись в спецотряд техноманьяков? Только здесь!
Реклама в бомжеленте.

Помогите детям!

[http://bablo.biz/zhestkaya-perlovka-ili-vstavlyaem-sapu-v-html-fajl/]