2012-02-16 15 views
5

È possibile reindirizzare internamente (quindi non cambierà URL nella barra degli indirizzi) con mod_rewrite su una porta diversa sullo stesso host? EgApache mod_rewrite internamente a un'altra porta

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

un'occhiata a 'mod_proxy' .. così come [P]' (Proxy) flag 'di RewriteRule. – LazyOne

+0

Grazie, [P] fa tutto ciò che voglio. – mm1

risposta

5

1, Abilita mod_proxy

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

2, è necessario configurare Apache per vhost:

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

</VirtualHost> 

3, il programma di installazione anche VHost sulla porta 9999

Maggiori informazioni qui:

+0

per quanto riguarda il punto 3: puoi includere nella tua risposta come farlo? Grazie – kiltek

0

Elaborazione sulla soluzione mod_proxy con [P], il flag delega:

  1. Enable moduli mod_proxy e mod_proxy_http:

    a2enmod proxy proxy_http 
    

    Senza questi due abilitato , tu' D in seguito ottenere uno stato 300 Proibito e il messaggio di errore "AH00669: tentare di effettuare la richiesta remota da mod_rewrite senza proxy abilitato" nei registri.

  2. Inserire il seguente nella sezione vhost config Apache2 per l'inoltro ospite:

    <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> 
    

    Ciò include una tecnica di Steve Webster per evitare dannosi lavorazione URL, explained here. Non sono sicuro di come gestire l'aggiunta del parametro GET in questo contesto.

  3. Restart Apache2:

    sudo service apache2 restart 
    
Problemi correlati