Apacheサーバーをプロキシサーバーとして構成しました。 proxy.conf
ファイルにいくつかのフィルターを追加して、Webサイトのテキスト(HTMLソースコード)を変更しました。
コード例:
ExtFilterDefine foodo mode=output intype=text/html
cmd="/bin/sed -r 's/foo/newfoo/g'"
SetOutputFilter foodo
私はそのために可能なすべての改造も有効にしました。 (mod_proxy
、mod_proxy_html
、...)
mod_sed
も使用してテキストを変更した後、それでも前向きな解決策はありません。
<Directory "/var/www/docs/sed">
AddOutputFilter Sed html
OutputSed "s/monday/MON/g"
OutputSed "s/sunday/Sun/g"
</Directory>
これが私のproxy.confです:
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from all
</Proxy>
誰かがこの問題について何か考えを持っていますか?
mod_substitute を使用できるはずです。プロキシ設定で、以下を追加します。
AddOutputFilterByType SUBSTITUTE text/html Substitute "s/foo/bar/ni"
私はそれを次の設定で動作させました:
<VirtualHost *:80>
ServerName su-test.int.mtak.nl
ProxyRequests Off
ProxyPreserveHost Off
ProxyPass / http://mtak.nl/
ProxyPassReverse / http://mtak.nl/
RequestHeader unset Accept-Encoding
FilterDeclare CUSTOMFILTER
FilterProvider CUSTOMFILTER SUBSTITUTE resp=Content-Type $*
FilterProvider CUSTOMFILTER SUBSTITUTE resp=Content-Type $/html
<Location />
FilterChain CUSTOMFILTER
Substitute "s|foo|bar|ni"
</Location>
</VirtualHost>
この線 RequestHeader unset Accept-Encoding
は、Webサーバーがgzip圧縮された応答を送信しないようにすることです。これにより、Apacheはその内容を置き換えることができなくなります。
Apache> = 2.4の場合、FilterProvider
構文が変更されました。私は以下を機能させることができました:
FilterProvider CUSTOMFILTER SUBSTITUTE "%{CONTENT_TYPE} =~ m|^text/html|"