9

I want to 301 redirect all example.org to www.example.org. The following example is doing just that, but it's got a lot of noise to it and is thus hard to maintain and error prone:

<VirtualHost 192.0.2.123:80>
        ServerName      example.org
        RedirectPermanent       /               http://www.example.org
</VirtualHost>
<VirtualHost 192.0.2.123:80>
        ServerName      www.example.org
        DocumentRoot    /usr/local/www/example
</VirtualHost>

Do you happen to know if there's some shorter version for the whole thing above?

Something like this pseudo-config:

<VirtualHost 192.0.2.123:80>
        ServerName      www.example.org
        ServerAlias     example.org
#       Redirect-Every-ServerAlias-To-ServerName
        DocumentRoot    /usr/local/www/example
</VirtualHost>

So that way I would just need to provide every subdomain that should be redirected under ServerAlias ?

womble
  • 96,255
  • 29
  • 175
  • 230
user569825
  • 351
  • 3
  • 6
  • 12
  • You can use mod_rewrite to redirect all requests to example.org to a www.example.org -- only 2 lines (well, 3 including engine activation directive). – LazyOne Aug 16 '11 at 09:03

2 Answers2

14

Use mod_rewrite, something like this:

RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www.example.org [nocase]
RewriteRule ^(.*)$        http://www.example.org$1 [last,redirect=301]
womble
  • 96,255
  • 29
  • 175
  • 230
O G
  • 874
  • 4
  • 6
  • 1
    A small improvement to this is to use !^www.example.org in your RewriteCond which will make it continue working no matter how many ServerAlias directives your vhost has. – Ladadadada Aug 16 '11 at 09:50
  • You can also use `%{SERVER_NAME}` in the expressions – OrangeDog Sep 04 '18 at 10:25
1
<VirtualHost *:80>
    ServerName www.example.org
    DocumentRoot /usr/local/www/example
</VirtualHost>

<VirtualHost *:80>
    ServerName example.org
    ServerAlias *.example.org another.org *.another.org
    Redirect 301 / http://www.example.org/
</VirtualHost>

make sure to put them in the right order, www first

Jan
  • 21
  • 1
  • 1
    Your answer is essentially the same as the example he gave of what he is currently doing. – Ladadadada Nov 16 '11 at 13:57
  • Not quite, the second contains all the aliases and just the aliases and the whole virtualhost redirects to the one allowed host. If you had one alias then it's probably more work, however, for multiple aliases, IMO this is easier to manage and see whats going on. – Tod Jan 30 '23 at 11:15