If you would use PHP 4 and 5 it would be easy to manipulate what module you want to use with:
<IfModule mod_php5.c>
<IfModule mod_php4.c>
So there 3 ways to deal with this problem:
- Correct the problems in the PHP scripts (imho the best way)
- Modify the PHP source code so it reports itself as "mod_php52.c","mod_php53.c"
- Run it as CGI where needed Check it out here
You can also run 2 servers on different ports and use a proxy
To be fairly honest with you, the best approch i can see for this would be if you setup your main domain normally like this:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /www/domain
</virtualhost>
Then you create a new virtualhost that will hold all domains you want to redirect like this:
<VirtualHost *:80>
ServerName example.com
ServerAlias foo.example.com bar.example.com others.example.com
DocumentRoot /www/redirect_folder
</virtualhost>
Inside that folder make a simple index.php page that summons the 301 so any domains hold in there will be redirect to your main domain with the 301 code.
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.example.com" );
?>
Why do you think it is better this way ?
This way you won't have to keep updating a bunch of places everytime you have a new domain to hold and redirct to your main domain and it won't be serving your users with the current name but will actually redirect them to your main domain in question.
If you are the server owner you can make it even better, you can put the 2nd virtualhost as the first virtualhost in your httpd.conf of vhost.conf file and whenever you hit the IP of your server it will lead you to the redirection page which will lead your users to the main domain in this case instead of having to set a bunch of ServerAlias you can just create the DNS A record for that given subdomain or domain leading to your IP and the server will take care of the rest.
In this last case all you would need for your virtual host would be:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /www/redirect_folder
</virtualhost>
as you dont need the ServerAlias since every and each request that hits your server IP will go to your first vhost.
In addition if you wanted to do this using .htaccess, it would be something like this i belive:
RewriteEngine on
rewritecond %{http_host} ^foo.example.com [nc]
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc]
Best Answer
How can you tell that the web server is serving anotherdomain.tld instead of another-domain.tld? Do you see that URL in the browser's address bar has anotherdomain.tld in it?
If you created these configuration with copy-paste technique, then you could have left the DocumentRoot the same for both domains.
Another guess is if anotherdomain.tld and another-domain.tld are configured on the same IP address for apache, but another-domain.tlp DNS "A" record is set up to a different IP, Apache HTTPD just pulls out the default VirtualHost for the IP specified in its configuration, which may be anotherdomain.tld.
Example: If you have in DNS:
Then in httpd.conf:
When you type
http://another-domain.tld/
in the browser's address bar, it makes a request to1.2.3.12
, which pulls out the default virtual host for1.2.3.12
, which isanotherdomain.tld
.These are just two wild guesses though...