Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 16.02.2007, 16:47   #1
Студент
 
Регистрация: 16.02.2007
Сообщений: 27
Репутация: -96

По умолчанию Apache изменять код html на лету

Приветствую. Вопрос такой - вот есть у нас mod_rewrite. Использует регулярные выражения, меняет линки. Все супер, сам пользуюсь.
Задача похожая, но другая и даже обратная - есть html страницы, надо, отдавая их клиенту заменять одну строку на другую в body страницы - типа php-шного str_replace. Можно это сделать средствами Apache для страниц html? Страницы старые, взяты со старого сайта, в них прописаны полные пути к images, вместе с указанием старого сервера. Страниц много, посещятся они будут редко - что-то вроде архива. Зачем в них прописаны полные пути с указанием сервера - загадка программирования.
Tallin вне форума   Ответить с цитированием

Реклама
Старый 16.02.2007, 17:22   #2
Ayavryk
--
 
Аватар для Ayavryk
 
Регистрация: 11.10.2003
Адрес: Село Убей
Сообщений: 2,041
Репутация: 199702

По умолчанию Re: Apache изменять код html на лету

Если это статические страницы - почему нельзя одноразово пропустить все странички через какой-нибудь офлайновый скрипт с контекстной заменой? И забыть навсегда.
__________________
Тынгыр, мынгыр, комсомол. Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
Ayavryk вне форума   Ответить с цитированием
Старый 16.02.2007, 18:30   #3
Tallin
Студент
 
Регистрация: 16.02.2007
Сообщений: 27
Репутация: -96

ТопикСтартер Re: Apache изменять код html на лету

Цитата:
Сообщение от Ayavryk
Если это статические страницы - почему нельзя одноразово пропустить все странички через какой-нибудь офлайновый скрипт с контекстной заменой? И забыть навсегда.
Можно, но не интересно.
Tallin вне форума   Ответить с цитированием
Старый 16.02.2007, 19:10   #4
WebCode
Кандидат наук
 
Регистрация: 04.06.2005
Сообщений: 410
Репутация: 13045
Отправить сообщение для WebCode с помощью ICQ

По умолчанию Re: Apache изменять код html на лету

Есть модуля для Apache, который позволяет менять один текст на другой. Кажется "mod_layout".
WebCode вне форума   Ответить с цитированием
Старый 16.02.2007, 19:24   #5
dkameleon
Особый статус
 
Аватар для dkameleon
 
Регистрация: 10.12.2005
Сообщений: 6,507
Репутация: 1047779
Отправить сообщение для dkameleon с помощью Skype™

По умолчанию Re: Apache изменять код html на лету

Цитата:
Сообщение от Tallin
Можно, но не интересно.
Согласен Всегда интереснее серверок на пустом месте пригрузить
__________________
Дизайн интерьера
dkameleon вне форума   Ответить с цитированием
Старый 16.02.2007, 19:49   #6
Roxis
SysАdmin
 
Аватар для Roxis
 
Регистрация: 19.11.2006
Адрес: Германия
Сообщений: 314
Репутация: 6814
Отправить сообщение для Roxis с помощью ICQ

По умолчанию Re: Apache изменять код html на лету

пропускать всё через свой cgi скрипт

Options +ExecCGI
AddHandler my-cgi htm html
Action my-cgi /cgi-bin/my.cgi
Roxis вне форума   Ответить с цитированием
Старый 18.02.2007, 07:44   #7
Andreyka
Senior IT Consultant
 
Аватар для Andreyka
 
Регистрация: 19.02.2005
Адрес: Odessa
Сообщений: 12,775
Репутация: 397406
Отправить сообщение для Andreyka с помощью Skype™
Социальные сети Профиль на Хабрахабре

По умолчанию Re: Apache изменять код html на лету

Не изобретайте велосипед, учите shtml.
__________________
Не стоит плодить сущности без необходимости
Andreyka вне форума   Ответить с цитированием
Старый 18.02.2007, 08:15   #8
Pike
ручной дятел
 
Аватар для Pike
 
Регистрация: 13.07.2004
Адрес: наверно уже дома
Сообщений: 965
Репутация: 38327

По умолчанию Re: Apache изменять код html на лету

А я бы не задумываясь реврайтил бы все через PHP скрипт, который бы читал файл, переписывал строку, и отдавал все клиенту. А задумываясь, скрипт бы при этом еще и переписывал изначальный файл на исправленный
__________________
free hosting
Pike вне форума   Ответить с цитированием
Старый 19.02.2007, 07:45   #9
Tallin
Студент
 
Регистрация: 16.02.2007
Сообщений: 27
Репутация: -96

ТопикСтартер Re: Apache изменять код html на лету

Цитата:
Сообщение от dkameleon
Согласен Всегда интереснее серверок на пустом месте пригрузить
Валуйный серверок пригрузить - только в радость!
Будет время, посмотрю mod_layout (спасиб WebCode) - очень интересны возможности Apache, тем более инфы не так много.
Файлики html уже почистил - примерно как писал Ayavryk - написал функцию на php - прошлась по всем html файлам в каталоге и исправила линки img.
Спасибо всем за информацию.
Tallin вне форума   Ответить с цитированием
Старый 25.02.2007, 18:44   #10
saygak
Студент
 
Регистрация: 17.02.2007
Сообщений: 45
Репутация: -5489

По умолчанию Re: Apache изменять код html на лету

Как-то собирался написать и не написал. Была у меня аналогичная ситуация. Вот мой алгоритм действий (може кому на будущее пригодиццо):
Задача была вставить внизу каждой страницы кусок кода, который будет выводить баннер. Менять каждый статический html не охота. Было сделано следующее:

1) Ищем все файлы в которых не закрыт тэг <body>:
for f in `find /home/www/virgtual/sitename -name \*.htm -print`; do grep '</body>' $f > /dev/null; if [ $? -eq 1 ]; then echo $f; fi; done

2) В найденных файлах тэг закрвыаем.

3) Добавляе вот такое в виртуалхост:
ScriptAlias /cgi-bin/ "/home/www/virtual/sitename/cgi-bin/"
AddHandler my-parser-handler htm
Action my-parser-handler /cgi-bin/server_parser

4) Вот такое в файл cgi-bin/server_parser:
PHP код:
#!/usr/bin/perl
print "Content-type: text/html; charset=koi8-r \r\n\r\n";
$param $ENV{PATH_TRANSLATED};

unless (open (REQUEST$param)) {
    print 
"Requested page unavailable\n";
} else {
        @
file = <REQUEST>;
        foreach 
$line (@file){
        if (
$line =~ /<body/){
        print 
$line;
        print <<
CODE
***91;ЗДЕСЬ ПИШЕМ ТО ЧТО НУЖНО ВЫВЕСТИ ВВЕРХУ СТРАНИЦЫ***93;
CODE
;
};

           if (
$line =~ /<\/body>/) {
              print 
"<BR><BR><BR><center><strong><a href=\"http://sitename.org/about/\">Lorem ipsum<br>dolor sit</a></strong></center></body>";
           };

           if (
$line !~ /<body/ or $line !~ /<\/body/) {print $line};

        };
        }; 
Вот так и работает - вверху баннер, внизу слоган.
saygak вне форума   Ответить с цитированием
Ответ



Опции темы

Быстрый переход


Регистрация Справка Календарь Поддержка Все разделы прочитаны