J'ai un Apache web server
qui fournit des pages HTML statiques. Pour une raison quelconque, je ne peux pas modifier les fichiers eux-mêmes, mais je veux toujours injecter du HTML dans chaque page qui est servie.
Est-ce possible avec mod_proxy
? Sinon, quelqu'un pourrait-il recommander un logiciel qui offre une telle fonctionnalité?
EDIT: Je dois insérer une sorte de bannière publicitaire (par exemple a javascript
) et un pixel de suivi.
la source
ScriptAlias
et<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
etc. Je ne veux pas altérer la réponse de l'utilisateur mais si vous le demandez, je donnerai plus d'informations.<?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) ?>
utilisez $ content pour charger le reste du contenu de la page. vous pouvez enregistrer ce fichier sous htmlinjector.php ou autre et l'appeler dans votre fichier htaccess comme ceci:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
Je ne sais pas pourquoi cela n'a pas été mentionné dans la liste des réponses. Désolé si cela m'a pris 2 ans pour voir cette question ...
Le moyen le plus simple et le plus puissant de faire ce que vous voulez faire ce que vous voulez est d'utiliser un filtre Apache .
Avoir juste:
Un script possible:
Cela changera tous les «a» en «A».
Assurez-vous d'activer le filtre dans votre httpd.conf, comme ceci:
Cette question se classe vraiment dans Google et il n'y a pas grand-chose en termes de forums
la source
Voici un tutoriel sur la façon d'utiliser mod_proxy_html pour modifier les liens sur une page Web (le contenu). Vous pourriez être en mesure d'appliquer cette modification le code HTML que vous souhaitez.
MISE À JOUR: Êtes-vous sûr de vouloir emprunter cette voie? Je pense qu'Apache est destiné à servir du contenu, pas à le créer. Cela irait probablement dans la partie vue d'un framework MVC. La raison pour laquelle je ne recommanderais pas cela est que vous enfreignez la règle de la modularité . Votre application Web sera étroitement liée à l'application qui la gère, ce qui complique les futures mises à niveau, déplacements, etc.
la source
Je préférerais le faire avec mod_rewrite et SSI.
Mettez d'abord le chemin dans une variable d'environnement
puis traiter cela dans le fichier shtml
(certaines parties de cette solution sont basées sur une question de stackoverflow /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
la source
mod_sed est un bon ajustement ici. Vous pouvez créer un filtre de sortie qui correspond à la balise de fermeture head ou body, par exemple, et insérer votre code HTML avant celui-ci.
la source
Un module mod_perl serait-il utile?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
Cela pourrait faire ce que vous voulez ou, du moins, vous orienter dans la bonne direction.
la source
Vous pouvez utiliser Apache mod_substitute pour injecter du HTML dans les réponses sortantes à l'aide de certains critères ou expressions régulières. Voici une explication sur la façon d'y parvenir.
la source
vous pouvez regarder dans la directive en-tête et pied de page d'apache, en utilisant les directives ci-dessous.
Plus de lecture est ici: http://wannabe.guru.org/scott/hobbies/apache/
la source
Mod Layout est désormais obsolète et si vous ne voulez pas la surcharge d'appeler un script externe, la meilleure solution qui a fonctionné pour moi a été mod sed . Vous pouvez utiliser mod sed pour faire correspondre la première ligne de doc (1s) et y ajouter du code de script d'en-tête et faire correspondre la dernière ligne ($ s) et y placer le pied de page.
la source
je peux insérer du HTML sur toutes les pages via Apache, mais uniquement pour le site hébergé par mon apache, pas tous les sites via mon serveur proxy apache.
c'est comme ça que ça marche. j'ai mis en place un XAMPP, téléchargez mod_layout 5.1 pour apache 2.4. (installer mod_layout est simple, si vous utilisez XAMPP pour Windows, téléchargez simplement mod_layout.so 5.1 pour windows et placez-le dans le dossier de votre module apache $ home / apache / module, puis ajoutez la configuration DSO à vos httpd.conf LoadModule layout_module modules / mod_layout.so - si vous utilisez linux ou un autre système d'exploitation, vous devez télécharger mod_layout.so pour linux, puis exécuter la commande make pour l'installer)
Après avoir installé mod_layout.so pour Windows, mettez simplement ce code sur votre fichier .htaccess ou httpd.conf vous obtiendrez une insertion html sur toute votre page:
C: /xampp/apache/cgi-bin/footer.php est l'endroit où vous mettez votre fichier html ou php, dans ma situation est C: /xampp/apache/cgi-bin/footer.php, mais vous pouvez le mettre n'importe où , donne juste le bon chemin, tu iras bien
la source