When I do the same grep of my config files, I get one line you didn't:
/etc/apache2/mods-enabled/dir.conf:3: DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
Make sure this line in /etc/php5/apache2/php.ini
is set this way:
; Enable the PHP scripting language engine under Apache.
engine = On
If you change it, restart Apache:
sudo apache2ctl restart
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
While it's not perfect, you could put the directives you want into a separate file, and then
Include
it in the relevant locations. I don't believe there's a way to do a logical OR in a singleIfModule
statement.