Я довольно много искал решение, и большинство ответов относятся либо к proxypass (обратный прокси), либо не имеют отношения к делу.
Веб-браузеры конечных пользователей настроены на использование прокси-сервера Apache.
Я хочу перенаправить всех пользователей на отдельную веб-страницу (если возможно, на том же сервере).
Mod_rewrite не работает, так как запускается только тогда, когда пользователь пытается посетить прокси-сервер. Я хочу перенаправить пользователей, пытающихся получить доступ к внешним сайтам.
Текущая конфигурация проста:
/var/httpd/conf.d/proxy.conf:
<VirtualHost *:*>
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from 172.0.0.0/21
</Proxy>
</VirtualHost>
Я думал заблокировать все запросы, а затем настроить страницу с пользовательской ошибкой, но не смог найти никаких примеров этой работы.
Я не пробовал выходные фильтры с прямым проксированием, но он работает с обратным проксированием, поэтому вы можете попробовать следующее:
#add this outside of any VirtualHost tags
ExtFilterDefine proxiedcontentfilter mode=output cmd="/usr/bin/php /var/www/proxyfilter.php"
#add this in your VirtualHost tag
SetOutputFilter proxiedcontentfilter
In proxyfilter.php have some code like the following:
#!/usr/bin/php
<?php
$html = file_get_contents('php://stdin');
#update this if-condition to match any non-internal hostnames
if ($_SERVER['HTTP_HOST'] != 'www.example.com') {
header('Location: http://localserver/message_to_display.html');
$html = '';
}
file_put_contents('php://stdout', $html);