2012-02-16 10 views
5

Czy możliwe jest wewnętrznie przekierowanie (tak aby URL nie zmienił się w pasku adresu) z mod_rewrite do innego portu na tym samym hoście? NpApache mod_rewrite wewnętrznie do innego portu

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

wygląd w 'mod_proxy' .. a także '[P]' (proxy) Flaga RewriteRule. – LazyOne

+0

Dzięki, [P] robi wszystko, co chcę. – mm1

Odpowiedz

5

1, Włącz mod_proxy

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

2, należy skonfigurować apache dla vhost:

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

</VirtualHost> 

3 Instalator również VHost na porcie 9999

Więcej informacji tutaj:

+0

odnośnie do punktu 3 ,: czy możesz podać w swojej odpowiedzi, jak to zrobić? Dzięki – kiltek

0

Opracowanie na mod_proxy roztworze [P], flaga proxy:

  1. Włącz moduły mod_proxy i mod_proxy_http:

    a2enmod proxy proxy_http 
    

    Bez tych dwóch włączony , ty' d później uzyska status 300 Forbidden, a komunikat o błędzie "AH00669: próba wykonania zdalnego żądania z mod_rewrite bez proxy" w dziennikach.

  2. miejsce następujące do sekcji vhost config Apache2 dla przekazującym 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> 
    

    Obejmuje techniki przez Steve Webster aby zapobiec niewłaściwemu URL Crafting, explained here. Nie wiem jednak, jak sobie poradzić z dołączaniem parametru GET w tym kontekście.

  3. restart Apache2:

    sudo service apache2 restart 
    
Powiązane problemy