Назад | Перейти на главную страницу

Как я могу перенаправить любые ServerAlias ​​на соответствующее ServerName?

Я хочу 301 перенаправить весь example.org на www.example.org. Следующий пример делает именно это, но в нем много шума, поэтому его сложно поддерживать и он подвержен ошибкам:

<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>

Вы случайно не знаете, есть ли более короткая версия для всего вышеизложенного?

Что-то вроде этого псевдоконфигурация:

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

Таким образом, мне просто нужно было бы предоставить каждый субдомен, который должен быть перенаправлен в ServerAlias ?

Используйте mod_rewrite, примерно так:

RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www.example.org [nocase]
RewriteRule ^(.*)$        http://www.example.org$1 [last,redirect=301]
<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>

убедитесь, что вы разместили их в правильном порядке, сначала www