I want to run a Tomcat application through a regular website URL, such as www.xyz.com. I would like the root of this domain to act as the base directory for the web application, so each request to www.xyz.com/a/b/c becomes www.abc.com:8080/myApp/a/b/c. Ideally, I would be able to do this transparently and only for certain webapps.

www.abc.com:8080 should still respond to requests.

What do I need to do to make this happen?

ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Read more about mod_proxy

  • this is the best solution to do this – Mike May 15 '10 at 12:33
  • 1
    To address the "only for certain webapps" side, just make the redirect path deeper. So: ProxyPass /a/b/c abc.com:8080/myApp/a/b/c ProxyPassReverse /a/b/c abc.com:8080/myApp/a/b/c To proxy all except certain paths, leave the ProxyPassReverse line but replace the ProxyPass lines with RewriteRules (making sure to use the [P] option to proxy rather than redirect), and make earlier rules to not proxy those paths. RewriteRule /notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp – Jeremy M Jul 14 '10 at 17:39
  • where do I add those lines? – Mina Michael May 1 '17 at 10:16
  • @MinaMichael The mod_proxy documentation states:Context: server config, virtual host, directory – ptman May 1 '17 at 20:04

A simpler method for doing this is to just add a Virtual Host entry in your Apache conf file. Usually located in /etc/httpd/conf, add something like this at the end of the Virtual Host section:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/

Restart your Apache service and you are done.


You can use mod_rewrite in Apache to do this. Load mod_rewrite in your Apache and in your www.xyz.com vhost add the following rule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

This should do the magic.

More info about mod_rewrite here.

EDIT: In order to keep the site name in the browsers, use mod_proxy as well by just appending a [P] at the end of the RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

This will force Apache to act as a proxy for that URL instead of just rewriting the URL.

  • This causes the browser to actually redirect. This works, but I would prefer if the site appeared as www.xyz.com from the user's side. – Stefan Kendall May 14 '10 at 15:28
  • 1
    use mod_proxy as well, and in the end of the RewriteRule append a [P], like this: RewriteRule ^/(.*) abc.com:8080/myApp/$1 [P]. I've also edited the answer above to include this info. – Marco Ramos May 14 '10 at 15:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.