Puede hacer esto: trabajar con mod_rewrite para cambiar las solicitudes de
/some/static/page.html
a
/htmlinjector.php?url=/some/static/page.html
luego use PHP (o lo que considere apropiado) para hacer la manipulación de archivos. Agregue un caché de salida para mejorar el rendimiento.
Como alternativa, los controladores de Apache suenan útiles:
Modificar contenido estático usando un script CGI
Las siguientes directivas harán que las solicitudes de archivos con la html
extensión activen el lanzamiento del
footer.pl
script CGI.
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
Luego, el script CGI es responsable de enviar el documento solicitado originalmente (señalado por la
PATH_TRANSLATED
variable de entorno) y de realizar las modificaciones o adiciones que se deseen.
Esto es más o menos lo que haría el enfoque mod_rewrite, solo que con menos piratería.
ScriptAlias
y<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
etc. Yo no quiero interferir con la respuesta del usuario, pero si usted lo solicita, le daré más información.<?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 cargar el resto del contenido de la página. puede guardar este archivo como htmlinjector.php o lo que sea y llamarlo en su archivo htaccess de esta manera:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
No estoy seguro de por qué esto no se ha mencionado en la lista de respuestas. Lo siento si me tomó 2 años ver esta pregunta ...
La forma más fácil y poderosa de hacer lo que quieres hacer es usar un filtro Apache .
Solo tengo:
Un posible script:
Esto cambiará todas las "a" en "A".
Asegúrese de habilitar el filtro en su httpd.conf, así:
Esta pregunta ocupa un lugar destacado en Google y no hay mucho en términos de foros
fuente
Aquí hay un tutorial sobre cómo usar mod_proxy_html para editar los enlaces en una página web (el contenido). Es posible que pueda aplicar esta modificación al html que desee.
ACTUALIZACIÓN: ¿Estás seguro de que quieres seguir esta ruta? Creo que Apache está destinado a servir contenido, no a crearlo. Esto probablemente iría en la vista de parte de un marco MVC. La razón por la que no recomendaría esto es que está rompiendo la regla de la modularidad . Su aplicación web estará entrelazada con la aplicación que la sirve, lo que complicará futuras actualizaciones, movimientos, etc.
fuente
Preferiría hacer esto con mod_rewrite y SSI.
Primero ponga la ruta en una variable de entorno
luego procese eso en el archivo shtml
(partes de esta solución se basan en una pregunta de stackoverflow /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
fuente
mod_sed encaja bien aquí. Puede crear un filtro de salida que coincida con la etiqueta de cabeza o cuerpo de cierre, por ejemplo, e inserte su html antes.
fuente
¿Sería útil un módulo mod_perl?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
Eso podría hacer lo que quieras o, al menos, señalarte en la dirección correcta.
fuente
Puede usar Apache mod_substitute para inyectar html en respuestas salientes utilizando algunos criterios o expresiones regulares. Aquí hay una explicación de cómo lograr esto.
fuente
puede consultar la directiva de encabezado y pie de página de apache, utilizando las siguientes directivas
Más lectura está aquí: http://wannabe.guru.org/scott/hobbies/apache/
fuente
Mod Layout ahora está obsoleto y si no desea la sobrecarga de llamar a un script externo, la mejor solución que funcionó para mí fue mod sed . Puede usar mod sed para que coincida con la primera línea de doc (1s) y agregar el código del script de encabezado allí y hacer coincidir la última línea ($ s) y poner el pie de página allí.
fuente
Puedo insertar html en todas las páginas a través de Apache, pero solo para el sitio alojado por mi apache, no todo el sitio a través de mi servidor proxy apache.
Así es como funciona. configuré un XAMPP, descargué mod_layout 5.1 para apache 2.4. (instalar mod_layout es simple, si usa XAMPP para Windows, simplemente descargue mod_layout.so 5.1 para Windows y póngalo en su carpeta de módulo de apache $ home / apache / module, luego agregue el DSO de configuración a sus httpd.conf LoadModule layout_module modules / mod_layout.so: si usa linux u otro sistema operativo, debe descargar mod_layout.so para linux, luego ejecute make command para instalar)
Después de instalar mod_layout.so para Windows, simplemente coloque este código en su archivo .htaccess o httpd.conf obtendrá su inserción html en toda su página:
C: /xampp/apache/cgi-bin/footer.php es donde pones tu archivo html o php, en mi situación es C: /xampp/apache/cgi-bin/footer.php, pero puedes ponerlo en cualquier lugar , solo da el camino correcto, estarás bien
fuente