"Маскирование" внешних ссылок с использованием RewriteProxy

У меня есть простое правило перезаписи, которое записывает во внешний домен с использованием ограничения Helicon Isapi_Rewrite 3 RewriteProxy.

Пример: блог RewriteProxy http://blog.com/

Однако ссылки на внешний сайт не маскируются прокси-сервером, как я ожидал. Они по-прежнему указывают на http://blog.com/link1 а не на http://mysite/blog/link1.

Может ли кто-нибудь указать мне правильное направление решения этой проблемы?

Спасибо

1 ответ

Решение

Эта дискуссия на форумах Helicon Tech посвящена той же проблеме. http://www.helicontech.com/forum/8460-rewrite_proxy_to_2d_machine.html

В первом примере представлен код для ISAPI Rewrite 2, но поток включает синтаксис ISAPI Rewrite 3 далее вниз по странице. Вот адаптация их кода версии 3 для вашего примера.

RewriteEngine on
RewriteBase /
RewriteRule ^blog$ http://mysite/blog/ [NC,R=301]
RewriteProxy ^/blog(/.*)?$ http\://blog.com$1 [NC,U]

(Это не проверено, потому что я использую ISAPI Rewrite 2.) Обратите внимание, что я столкнулся с некоторыми препятствиями при попытке обратного прокси-сервера другого сайта в моем "основном" домене. Вы можете также обнаружить эти проблемы.

1) Не относительные ссылки

Если приложение не было закодировано с нуля, чтобы предполагать обратное проксирование, я обнаружил, что оно может сломаться. Будет работать голая HTML-страница, использующая все относительные ссылки. Однако передача HTML через обратный прокси-сервер, содержащий этот код, будет отображаться на http://mysite/page_from_the_root.html. ISAPI Rewrite не знает, чтобы перехватить этот запрос, но будет прокси-контент, если браузер пользователя нажмет http://mysite/blog/page_from_the_root.html

2) Печенье

Blog.com может записывать файлы cookie из домена blog.com. Страница, обслуживаемая через домен MySite, может не иметь доступа к этим файлам cookie, в зависимости от настроек браузера пользователя.

3) JavaScript и AJAX

4) SSL-сертификаты

Другие вопросы по тегам