Você pode fazer o seguinte: Trabalhe com mod_rewrite para alterar solicitações de
/some/static/page.html
para
/htmlinjector.php?url=/some/static/page.html
então use PHP (ou o que achar apropriado) para fazer a manipulação de arquivos. Adicione um cache de saída para melhorar o desempenho.
Como alternativa, os Apache Handlers parecem úteis:
Modificando conteúdo estático usando um script CGI
As diretivas a seguir farão com que solicitações de arquivos com a html
extensão disparem o lançamento do
footer.pl
script CGI.
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
Em seguida, o script CGI é responsável por enviar o documento originalmente solicitado (apontado pela
PATH_TRANSLATED
variável de ambiente) e fazer as modificações ou acréscimos desejados.
Isso é mais ou menos o que a abordagem mod_rewrite faria, apenas com menos invasões.
ScriptAlias
e<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
etc. Eu não quero mexer com a resposta do usuário, mas se você pedir, vou dar mais informações.<?php ob_start(); include("/some/static/page.html"); $contents = ob_get_contents(); ob_end_clean(); echo str_replace('</head>', '<script async>Some script content goes here like adsense code</script></head>', $contents) ?>
use $ content para carregar o restante do conteúdo da página. você pode salvar o arquivo como htmlinjector.php ou qualquer outra coisa e chamá-lo em seu arquivo .htaccess assim:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
Não sei por que isso não foi mencionado na lista de respostas. Desculpe se demorei 2 anos para ver esta pergunta ...
A maneira mais fácil e poderosa de fazer o que você quer fazer é usar um filtro Apache .
Apenas tenha:
Um script possível:
Isso mudará todos os "a" s para "A" s.
Certifique-se de habilitar o filtro no seu httpd.conf, assim:
Esta questão está realmente no Google e não há muito em termos de fóruns
fonte
Aqui está um tutorial sobre como usar o mod_proxy_html para editar os links em uma página da web (o conteúdo). Você pode aplicar isso modifique o html desejado.
ATUALIZAÇÃO: Tem certeza de que deseja seguir esta rota? Eu acho que o Apache deve servir conteúdo, não criá-lo. Isso provavelmente iria na parte de exibição de uma estrutura MVC. A razão pela qual eu não recomendaria isso é que você está violando a regra da modularidade . Seu aplicativo da web será entrelaçado com o aplicativo que o servidor, complicando futuras atualizações, movimentos, etc.
fonte
Eu preferiria fazer isso com mod_rewrite e SSI.
Primeiro, coloque o caminho em uma variável de ambiente
então processe isso no arquivo shtml
(partes desta solução são baseadas em uma pergunta de stackoverflow /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
fonte
mod_sed é um bom ajuste aqui. Você pode criar um filtro de saída que corresponda à tag de fechamento ou corpo, por exemplo, e inserir seu html antes dele.
fonte
Um módulo mod_perl seria útil?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
Isso pode fazer o que você deseja ou, pelo menos, apontar na direção certa.
fonte
Você pode usar o Apache mod_substitute para injetar html nas respostas de saída usando alguns critérios ou expressões regulares. Aqui está uma explicação de como conseguir isso.
fonte
você pode consultar a diretiva de cabeçalho e rodapé do apache, usando as diretivas abaixo.
Mais leitura está aqui: http://wannabe.guru.org/scott/hobbies/apache/
fonte
O Mod Layout agora está obsoleto e, se você não deseja a sobrecarga de chamar um script externo, a melhor solução que funcionou para mim foi o mod sed . Você pode usar o mod sed para corresponder à primeira linha do documento (1s) e adicionar o código do script de cabeçalho lá, à última linha ($ s) e colocar o rodapé lá.
fonte
Eu posso inserir html em todas as páginas via Apache, mas apenas no site hospedado pelo meu apache, nem todo o site no meu servidor proxy apache.
é assim que funciona. eu configurei um XAMPP, baixei o mod_layout 5.1 para o apache 2.4. (instale mod_layout é simples, se você usa o XAMPP para windows, basta baixar o mod_layout.so 5.1 para windows e colocá-lo na pasta do módulo apache $ home / apache / module e adicione o DSO de configuração ao seu httpd.conf LoadModule layout_module modules / mod_layout.so - se você estiver usando linux ou outro sistema operacional, baixe o mod_layout.so para linux e execute o comando make para instalar)
Depois de instalar o mod_layout.so para Windows, basta colocar este código no seu arquivo .htaccess ou httpd.conf, você receberá o html insert em toda a sua página:
C: /xampp/apache/cgi-bin/footer.php é onde você coloca seu arquivo html ou php, na minha situação é C: /xampp/apache/cgi-bin/footer.php, mas você pode colocá-lo em qualquer lugar , apenas dê o caminho certo, você ficará bem
fonte