I have some subdomains I want to redirect to specific ports on the same server. Say I have
dev.mydomain.com
I want dev.mydomain.com
to transparently redirect to mydomain.com:8080
and I want to preserve the original sub-domain name the url of the browser.
How do I do this with Apache 2.2? I have Apache 2.2 running on default port 80
. I can't figure out the write configuration to get this to happen.
I have already set up dev.mydomain.com
to resolve in DNS to mydomain.com
.
This is for an intranet development server that has a non-routable ip address so I am not so concerned about exploits and security that would compromise a publicly facing server.
Solution
Here is what I finally came up with after being set in the right direction by Miles Erickson. I wanted the address bar to reflect the original subdomain/domain of the request and not the redirected server and port, but he put me on the right path to Google up a solution using
VirtualHost
and I finally found a solution that included the use ofmod_proxy
.First, make sure
mod_proxy
is enabled:Next, add the following to your site config (e.g.,
/etc/apache2/sites-available/000-default.conf
):Run the following line on terminal (specify your domain and sub domain name correctly)
Paste the following code and change as your requirement
Run the following lines on terminal (specify your domain and sub domain name correctly)
Assuming that dev.mydomain.com can be resolved to mydomain.com's IP, you could add the following to your httpd.conf:
Relevant Apache documentation:
Related question: Apache redirect based on hostname
(Note: the original version of this answer incorrectly suggested the use of RedirectMatch, which, as @ChrisS helpfully pointed out, cannot parse the domain portion of the URL.)
Add in your main vhost configuration the following lines:
Note that this requires mod_proxy on Apache.
You're looking for mod_rewrite. Here's the link to Apache's documentation which includes many examples for basic and advanced configurations..
And if you're unable to interpret the documentation yourself, try adding this to httpd.conf:
And if that's not a clear example, here's a link to a mod_rewrite beginners guide too.