Sie könnten dies tun: Arbeiten Sie mit mod_rewrite, um Anforderungen von zu ändern
/some/static/page.html
zu
/htmlinjector.php?url=/some/static/page.html
Verwenden Sie dann PHP (oder was auch immer Sie für angemessen halten), um die Datei zu manipulieren. Fügen Sie einen Ausgabecache hinzu, um die Leistung zu verbessern.
Als Alternative klingen Apache-Handler hilfreich:
Statischen Inhalt mit einem CGI-Skript ändern
Die folgenden Anweisungen bewirken, dass Anforderungen für Dateien mit der html
Erweiterung den Start des footer.pl
CGI-Skripts auslösen
.
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
Das CGI-Skript ist dann dafür verantwortlich, das ursprünglich angeforderte Dokument (auf das die PATH_TRANSLATED
Umgebungsvariable verweist) zu senden und die gewünschten
Änderungen oder Ergänzungen vorzunehmen.
Dies ist mehr oder weniger das, was der mod_rewrite-Ansatz tun würde, nur mit weniger Hackery.
ScriptAlias
und<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
usw. Ich bin nicht mit dem Benutzer Antwort manipulieren will , aber wenn Sie verlangen, werde ich weitere Informationen geben.<?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) ?>
Verwenden Sie $ content, um den Rest des Seiteninhalts zu laden. Sie können diese Datei als htmlinjector.php oder wie auch immer speichern und in Ihrer htaccess-Datei wie folgt aufrufen:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
Ich bin nicht sicher, warum dies nicht in der Antwortliste erwähnt wurde. Es tut mir leid, wenn ich 2 Jahre gebraucht habe, um diese Frage zu sehen ...
Der einfachste und leistungsstärkste Weg, um das zu tun, was Sie wollen, ist die Verwendung eines Apache-Filters .
Nur haben:
Ein mögliches Skript:
Dies wird alle "a" s in "A" s ändern.
Stellen Sie sicher, dass Sie den Filter in Ihrer httpd.conf wie folgt aktivieren:
Diese Frage steht bei Google ganz oben und es gibt nicht viel in Bezug auf Foren
quelle
In diesem Tutorial erfahren Sie , wie Sie mit mod_proxy_html die Links auf einer Webseite (den Inhalt) bearbeiten. Möglicherweise können Sie dies anwenden, um die gewünschte HTML-Datei zu ändern.
UPDATE: Sind Sie sicher, dass Sie diese Route einschlagen möchten? Ich denke, Apache soll Inhalte bereitstellen, nicht erstellen. Dies würde wohl in den Ansichtsteil eines MVC-Frameworks gehen. Der Grund, warum ich dies nicht empfehlen würde, ist, dass Sie die Regel der Modularität brechen . Ihre Webanwendung wird mit der Anwendung verflochten, die sie bedient, was zukünftige Upgrades, Umzüge usw. erschwert.
quelle
Ich würde es vorziehen, dies mit mod_rewrite und SSI zu tun.
Legen Sie zuerst den Pfad in eine Umgebungsvariable
Verarbeiten Sie das dann in der Shtml-Datei
(Teile dieser Lösung basieren auf einer Stackoverflow-Frage /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
quelle
mod_sed passt hier gut. Sie können einen Ausgabefilter erstellen, der beispielsweise mit dem schließenden Kopf- oder Körper-Tag übereinstimmt, und Ihre HTML-Datei davor einfügen.
quelle
Wäre ein mod_perl-Modul von Nutzen?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
Das könnte tun, was Sie wollen, oder Sie zumindest in die richtige Richtung weisen.
quelle
Sie können Apache mod_substitute verwenden, um HTML-Code mithilfe einiger Kriterien oder regulärer Ausdrücke in ausgehende Antworten einzufügen. Hier finden Sie eine Erklärung, wie dies erreicht werden kann.
quelle
Sie können in die Header- und Footer-Direktive von Apache schauen, indem Sie die folgenden Direktiven verwenden.
Weitere Informationen finden Sie hier: http://wannabe.guru.org/scott/hobbies/apache/
quelle
Mod - Layout ist jetzt veraltet , und wenn Sie nicht möchten , dass der Aufwand für ein externes Skript aufrufen, ist die beste Lösung , die für mich gearbeitet wurde mod sed . Sie können mod sed verwenden, um die erste Zeile des Dokuments (1s) abzugleichen und dort den Skriptcode für die Kopfzeile und die letzte Zeile ($ s) einzufügen und dort die Fußzeile einzufügen.
quelle
Ich kann HTML auf allen Seiten über Apache einfügen, aber nur für Websites, die von meinem Apache gehostet werden, nicht für alle Websites über meinen Apache-Proxyserver.
so funktioniert es Ich richte ein XAMPP ein, lade mod_layout 5.1 für Apache 2.4 herunter. (Die Installation von mod_layout ist einfach. Wenn Sie XAMPP für Windows verwenden, laden Sie einfach mod_layout.so 5.1 für Windows herunter und legen Sie es in Ihrem Apache-Modul-Ordner $ home / apache / module ab. Fügen Sie dann das DSO config zu Ihrer httpd.conf hinzu. LoadModule layout_module modules / mod_layout.so - Wenn Sie Linux oder ein anderes Betriebssystem verwenden, sollten Sie mod_layout.so für Linux herunterladen und dann den Befehl make ausführen, um es zu installieren.
Nachdem Sie mod_layout.so für Windows installiert haben, fügen Sie diesen Code einfach in Ihre .htaccess-Datei oder httpd.conf ein.
C: /xampp/apache/cgi-bin/footer.php ist der Ort, an dem Sie Ihre HTML- oder PHP-Datei ablegen. In meiner Situation ist es C: /xampp/apache/cgi-bin/footer.php, aber Sie können sie überall ablegen , gib einfach den richtigen Weg, du wirst in Ordnung sein
quelle