Frage

Ich habe experimentiert mit woopra.com Ein web-Analyse-tool.Das erfordert ein Stück javascript-code, der auf jeder Seite-Funktion.Dies ist einfach genug mit dynamischer Websites mit universal-Kopfzeilen oder Fußzeilen aber nicht für völlig statischen html-Seiten.

Ich versuchte zu arbeiten, um Sie durch die Verwendung einer Kombination von Apache schreibt und SSI zu "Verpacken", die statische html-Seiten mit dem erforderlichen code.Zum Beispiel...

Ich habe die folgenden änderungen an meiner apache config

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !=test.shtml
    RewriteCond %{IS_SUBREQ}  false 
    RewriteRule (.*)\.html test.shtml?$1.html

Der test.shtml-Datei enthält...

    <script type="text/javascript">
       var XXXXid = 'xxxxxxx';
    </script>
    <script src="http://xxxx.woopra.com/xx/xxx.js"></script>

    <!--#set var="page" value="$QUERY_STRING" -->
    <!--#include virtual= $page -->

Die Idee war, dass eine Anforderung kommen in für

    /abc.html

würde umgeleitet werden

    /test.shtml?abc.html

die shtml würde dann die ursprüngliche Datei in der Antwort-Seite.

Leider ist es nicht ganz so funktioniert wie geplant :) kann jemand sehen, was ich falsch mache oder vielleicht eine alternative vorschlagen Ansatz.Gibt es eine apache-Modulen, die das gleiche tun könnte.Vorzugsweise, das konfiguriert werden kann auf einer pro-Seite-basis.

Vielen Dank

Peter

War es hilfreich?

Lösung

Ich denke, dass mod_filter_ext ist das Modul, das Sie suchen.Sie können schreiben, ein kurzes Perl-Skript zum Beispiel zum einfügen der JS-code in die Seiten und register zum verarbeiten von HTML-Seiten:

while (<>) {
    s/<html>/\Q<script>....\E/;
    print $_;
}

Man könnte sogar so etwas wie sed zur Durchführung der substitution.

Andere Tipps

Wenn die Seiten statisch sind, warum würden Sie ändern on the fly " statt Vorverarbeitung alle Seiten auf einer Website, ist das hinzufügen von Stück gekennzeichneten javascript, um jeden von Ihnen?Das ist einfacher und wohl auch effektiver (Sie haben wahrscheinlich mehr Seitenaufrufe als die Seiten zu wechseln)

Dies könnte getan werden, eine Menge Weg.Ich würde vorschlagen, ein kleines perl inline-Ersatz.

ok, die obige Methode das größte problem ist es, brechen Sie Ihre html-Wirksamkeit, indem ein script-tag außerhalb des <html> tags

ich würde Zustimmen, mit der anderen auf eine pre-Prozess über Ihre html-Dateien wie ein sed/awk-Skript

heres ein kurzes Beispiel: {vorausgesetzt, das Skript gehört, können Hinzugefügt werden, bevor die </head> und, dass die </head> ist am Anfang ein newline

#!/bin/bash

cd /var/webserver/whatever/

grep -r '<\/head>' */*|grep "^.*\.html*:" >/var/tmp/tempfile.txt
((lines = $(wc -l /var/tmp/dom-tempfile.txt | awk '{print $1}')))
if [ $lines -gt 0 ]
then
 while read line; do
 sed 's/<script type="text\/javascript"> var XXXXid = "xxxxxxx"; <\/script><script src="http:\/\/xxxx\.woopra\.com\/xx\/xxx\.js"><\/script><\/head>/^<\/head>/g' $line>/var/tmp/tempfile.htm
 mv /var/tmp/tempfile.htm $line
 done < <(sed 's/\(^.*\.html*\):.*$/\1/' /var/tmp/tempfile.txt)
fi
exit 0

Möglicherweise haben Sie einen Syntaxfehler, da $page ist nicht im Lieferumfang enthalten, in Anführungszeichen gesetzt, jedoch sind die zwei wichtigsten Gründe, die dies nicht sind die folgenden:

  • auch die virtuellen sollte ein Pfad beginnend mit / in deinem Beispiel die query-string-sollte /abc.html nicht abc.html
  • die rewrite-Regel sollte starten mit dem Weg als gut, so dass die rewrite-Regel

    RewriteRule ^(.*)\.html /test.shtml?$1.html
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top