2014-10-23 3 views
0

Я хотел бы реализовать своего рода прокси-систему, где я могу напечатать url следующим образом: http://example.com/www.stackoverflow.com и вернуть содержимое сайта www.stackoverflow.com. Я пробовал это так:Прокси-сервер Apache и ProxyPass

ProxyRequests Off 
<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/external/.* 
RewriteRule ^/(.*) http://%{HTTP_HOST}/external/$1 [NC,R=302,L] 
ProxyPassMatch /external/([A-Za-z]*)/(.*) wwww.stackoverflow.com/$1/$2 
ProxyPassMatch /external/(.*) http://$1/ 

Это прекрасно работает, но работает только для stackoverflow.com, потому что он жестко запрограммирован. Есть ли какое-то правило, чтобы динамический URL-адрес мог работать, поэтому я могу использовать http://example.com/yahoo.com? И да, если вы пытаетесь жестко закодировать yahoo.com или google.com, вместо того, чтобы переписывать URL-адрес, автоматически перенаправляются на yahoo.com или google.com, что с этим связано?

ответ

1

Вы можете использовать [P] флаг RewriteRule:

RewriteEngine On 
RewriteRule ^/(.*) http://$1 [P] 

Больше информации here

+0

OK, который будет работать, если я только локальный/stackoverflow.com, содержание будет возвращено. Однако изображения не будут загружены из-за относительного пути (например, locahost/data/image.jpg) Я не вижу, как это можно исправить, возможно, переписать все относительные ссылки внутри html-страницы? – Zed

Смежные вопросы