Możesz to zrobić: Pracuj z mod_rewrite, aby zmienić żądania
/some/static/page.html
do
/htmlinjector.php?url=/some/static/page.html
następnie użyj PHP (lub cokolwiek, co uważasz za stosowne), aby manipulować plikami. Dodaj wyjściową pamięć podręczną, aby poprawić wydajność.
Alternatywnie, handlery Apache wydają się pomocne:
Modyfikowanie zawartości statycznej za pomocą skryptu CGI
Poniższe dyrektywy spowodują, że żądania plików z html
rozszerzeniem wyzwalają uruchomienie
footer.pl
skryptu CGI.
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
Następnie skrypt CGI jest odpowiedzialny za wysyłanie pierwotnie żądanego dokumentu (wskazanego przez
PATH_TRANSLATED
zmienną środowiskową) i dokonywanie wszelkich wymaganych modyfikacji lub uzupełnień.
Jest to mniej więcej to, co zrobiłoby podejście mod_rewrite, tylko przy mniejszym hakowaniu.
ScriptAlias
i<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
itd. Nie chcę ingerować w odpowiedzi użytkownika, ale jeśli poprosisz, dam więcej informacji.<?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) ?>
użyj $ content, aby załadować resztę zawartości strony. możesz zapisać ten plik jako htmlinjector.php lub cokolwiek i nazwać go w swoim pliku htaccess w następujący sposób:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
Nie jestem pewien, dlaczego nie wymieniono tego na liście odpowiedzi. Przepraszam, jeśli zajęło mi to 2 lata, aby zobaczyć to pytanie ...
Najłatwiejszym i najskuteczniejszym sposobem na robienie tego, co chcesz robić, jest filtr Apache .
Po prostu mieć:
Możliwy skrypt:
Spowoduje to zmianę wszystkich „a” na „A”.
Pamiętaj, aby włączyć filtr w httpd.conf, tak jak to:
To pytanie zajmuje naprawdę wysokie miejsce w Google i nie ma tam zbyt wiele forów
źródło
Oto samouczek na temat używania mod_proxy_html do edycji linków na stronie internetowej (treść). Być może będziesz mógł zastosować tę modyfikację html, którą chcesz.
AKTUALIZACJA: Czy na pewno chcesz wybrać tę trasę? Myślę, że Apache ma na celu dostarczanie treści, a nie ich tworzenie. Prawdopodobnie przejdzie to w części widokowej frameworka MVC. Nie polecam tego, bo łamiesz zasadę modułowości . Twoja aplikacja internetowa będzie przeplatana z aplikacją obsługującą ją, co komplikuje przyszłe aktualizacje, przeniesienia itp.
źródło
Wolałbym to zrobić z mod_rewrite i SSI.
Najpierw umieść ścieżkę w zmiennej środowiskowej
następnie przetworz to w pliku shtml
(części tego rozwiązania są oparte na pytaniu dotyczącym przepływu stosu /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
źródło
mod_sed pasuje tutaj. Możesz na przykład utworzyć filtr wyjściowy pasujący do zamykającej znacznika head lub body i wstawić przed nim swój HTML.
źródło
Czy moduł mod_perl byłby przydatny?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
To może zrobić, co chcesz, lub przynajmniej skierować cię we właściwym kierunku.
źródło
Możesz użyć mod_substitute Apache, aby wstrzyknąć HTML do odpowiedzi wychodzących przy użyciu niektórych kryteriów lub wyrażeń regularnych. Oto wyjaśnienie, jak to osiągnąć.
źródło
możesz zajrzeć do nagłówka i stopki dyrektywy apache, korzystając z poniższych dyrektyw.
Więcej lektur znajduje się tutaj: http://wannabe.guru.org/scott/hobbies/apache/
źródło
Mod Layout jest teraz przestarzały i jeśli nie chcesz nakładać się na wywołanie zewnętrznego skryptu, najlepszym rozwiązaniem, które działało dla mnie, było mododowanie . Możesz użyć mod sed, aby dopasować pierwszy wiersz doc (1s) i dodać tam kod skryptu nagłówka i dopasować ostatni wiersz ($ s) i umieścić tam stopkę.
źródło
mogę wstawiać html do wszystkich stron za pośrednictwem Apache, ale tylko w przypadku witryny obsługiwanej przez mój apache, nie wszystkie witryny za pośrednictwem serwera proxy Apache.
tak to działa. skonfigurowałem XAMPP, pobierz mod_layout 5.1 dla apache 2.4. (instalacja mod_layout jest prosta, jeśli używasz XAMPP dla systemu Windows, po prostu pobierz mod_layout.so 5.1 dla systemu Windows i umieść go w folderze modułu apache $ home / apache / module, a następnie dodaj config DSO do swojego modułu httpd.conf LoadModule moduły układu / mod_layout.so - jeśli używasz linuxa lub innego systemu operacyjnego, powinieneś pobrać mod_layout.so dla systemu Linux, a następnie uruchomić komendę make, aby zainstalować)
Po zainstalowaniu mod_layout.so dla systemu Windows, po prostu umieść ten kod w pliku .htaccess lub httpd.conf, a otrzymasz wstawkę HTML na całą stronę:
C: /xampp/apache/cgi-bin/footer.php to miejsce, w którym umieszczasz swój plik HTML lub php, w mojej sytuacji jest to C: /xampp/apache/cgi-bin/footer.php, ale możesz go umieścić gdziekolwiek , podaj właściwą ścieżkę, wszystko będzie dobrze
źródło