"Маскирование" внешних ссылок с использованием 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-сертификаты