2012-11-04 28 views
5

Tôi cần bỏ qua các giới hạn tập lệnh trên trang web để hiển thị cho người dùng bản đồ khi họ nhấp vào liên kết từ trang web bên ngoài mà tôi đã tải bên trong iframe (external.com/onlyforme). Tôi đã học được rằng cách dễ nhất để làm điều này là thiết lập một proxy ngược để Apache có thể truy xuất external.com/onlyforme khi tôi truy cập local.com/external và tạo nó để nó xuất hiện từ miền của tôi.Proxy ngược của Apache: cách chuyển hướng URL tương đối trong trang web bên ngoài trở lại chính nó?

Điều này chủ yếu là hiệu quả, nhưng khi external.com/onlyforme/index.html cố gắng truy cập external.com/onlyforme/site_media/script.js, điều này được chuyển hướng đến local.com/site_media/script.js, không phải những gì tôi muốn. Thay vào đó, tôi muốn điều này được chuyển hướng đến URL chính xác bên trong external.com/onlyforme, để trang web bên ngoài hoạt động như mong đợi.

Tôi có thể làm như thế nào?

Tôi có điều này trong httpd.conf của tôi, bên ngoài bất kỳ báo cáo cấu hình khác:

ProxyRequests Off 
ProxyPass /external/ http://www.external.com/onlyforme 
ProxyPassReverse /external/ http://www.external.com/onlyforme 

Tôi đang chạy Apache 2.2.

Trả lời

2

Bạn cần thêm một vài chỉ thị ProxyHTMLURLMap vào bên trên, để kiểm tra và viết lại bất kỳ URL được mã hóa cứng nào trong HTML trả về, ví dụ:

ProxyRequests Off 
ProxyPass  /external/   http://www.external.com/onlyforme 
ProxyHTMLURLMap http://www.external.com/onlyforme  /external 

<Location /external/> 
    ProxyPassReverse http://www.external.com/onlyforme 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap/   /external/ 
    ProxyHTMLURLMap /site_media /external/site_media/ 
</Location> 

Xem thêm: http://wiki.uniformserver.com/index.php/Reverse_Proxy_Server:_mod_proxy_html câu trả lời

0

arober11 's rất nhiều đã giúp giải quyết các vấn đề tương tự của tôi. Tôi đã cố gắng thu hẹp quy tắc ngắn nhất có thể và có cấu hình của riêng tôi để có một số Etherpad chạy tại https://my-domain-name.wtf/pad:

<Location /pad> 
    ProxyPass http://localhost:9001 retry=0 
    # retry=0 => avoid 503's when restarting etherpad-lite 
    ProxyPassReverse http://localhost:9001 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap http://localhost:9001 
</Location> 
RewriteRule ^/pad$ /pad/ [R]