Apache2 redirect domain to internal page

September 1, 2015 2.3k views
LAMP Stack Apache WordPress Ubuntu

I have two domains pointing to a site hosted by apache2 (a.com and b.com for example). The primary domain is a.com and the website can be accessed from this domain.

However, the page a.com/test/ should redirect to b.com (not b.com/test/) to display the content from the server (as it normally would for a.com/test/) and this content should also be displayed if b.com is accessed directly.

I thought that reverse proxies might be the way to go but haven't had any luck, I was wondering if this is possible to do within my .htaccess file (both domains are pointing to the server).

  • In this case you actually might want to look into virtual hosts, which can be used for redirecting as well as hosting multiple sites from the same Droplet. https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

    by Justin Ellingwood
    The Apache web server is the most popular way to serve web content on the internet. Apache has the ability to serve multiple domains from a single server by using a mechanism called "virtual hosts". If a virtual host is configured correctly for each domain, the web server can correctly route traffic to the appropriate files based on the domain name requested. In this guide, we'll demonstrate how to configure Apache virtual hosts on an Ubuntu 14.04 VPS.
  • Thanks, I'm using Wordpress so I can't use vhosts or htaccess because I have to wait for Wordpress to sort out the permalinks. Do you know any other way to achieve this (possibly through addrewriterule) in Wordpress' functions.php)?

1 Answer

Hi, you should be able to do this through a proxy RewriteRule. When you said you'd tried that and it didn't work, did you mean the site appeared broken or that you couldn't get the RewriteRule to work? If the issue was that the site appeared broken, keep in mind that "b.com" in your example needs to send back HTML to the browser that is completely valid, including all URLs being valid with how it references them. If the HTML sent back when you access "b.com" uses URLs starting with "/" that use paths that only exist on "a.com", that will result in broken URLs.

The proxy approach works great (I've used it before) but it does exactly what you tell it and browsers will continue to work exactly as they do. The browser doesn't know there's any relationship between "a.com" and "b.com", so if the HTML on "b.com" has paths like "/img/foo.png" that actually only exist on "a.com", you'll get 404's.---Of course, you may be able to solve that with more RewriteConds/RewriteRules (e.g. check if any requested file exists, if not, proxy through to a.com).

Have another answer? Share your knowledge.