2012-02-16 26 views
5

Có thể chuyển hướng nội bộ (do đó url sẽ không thay đổi trong thanh địa chỉ) với mod_rewrite sang cổng khác trên cùng một máy chủ không? Ví dụApache mod_rewrite nội bộ vào cổng khác nhau

http://host.com:8080 -> http://host.com:9999/myapplication/?param=val 
+1

nhìn vào 'mod_proxy' .. cũng như '[P]' (Proxy) cờ của RewriteRule. – LazyOne

+0

Cảm ơn, [P] đã làm tất cả những gì tôi muốn. – mm1

Trả lời

5

1, Enable mod_proxy

LoadModule proxy_module   modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

2, Bạn nên cấu hình apache cho vhost:

<VirtualHost *:8080> 
    .... 
    ProxyPass/http://host.com:9999/myapplication/?param=val 
    ProxyPassReverse/http://host.com:9999/myapplication/?param=val 

</VirtualHost> 

3, Setup cũng vhost trên cổng 9999

Thông tin thêm tại đây:

+0

liên quan đến điểm 3 ,: bạn có thể đưa vào câu trả lời của bạn làm thế nào để làm điều đó? Cảm ơn – kiltek

0

Lập trên giải pháp mod_proxy với [P], proxy cờ:

  1. Enable module mod_proxy và mod_proxy_http:

    a2enmod proxy proxy_http 
    

    Nếu không có hai kích hoạt , bạn' d sau đó nhận được 300 trạng thái Bị cấm và thông báo lỗi "AH00669: cố thực hiện yêu cầu từ xa từ mod_rewrite mà không bật proxy" trong nhật ký.

  2. Đặt sau vào phần cấu hình vhost Apache2 cho chuyển tiếp host:

    <VirtualHost *:8080> 
        … 
        RewriteEngine on 
        RewriteCond %{REQUEST_URI} !^$ 
        RewriteCond %{REQUEST_URI} !^/ 
        RewriteRule .*    - [R=400,L] 
    
        RewriteRule (.*) http://host.com:9999/myapplication/$1?param=val [P,L] 
        … 
    </VirtualHost> 
    

    này bao gồm một kỹ thuật bởi Steve Webster để ngăn chặn crafting URL độc hại, explained here. Tuy nhiên, không chắc chắn làm thế nào để đối phó với việc gắn thêm tham số GET trong ngữ cảnh này.

  3. Restart Apache2:

    sudo service apache2 restart 
    
Các vấn đề liên quan