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

Перенаправление виртуального хоста для несуществующих поддоменов на www

Я знаю, что есть несколько разных способов перенаправления с использованием apache, хотя я хотел проверить, правильный ли это способ сделать это через виртуальный хост?

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example/public

<Directory "/var/www/example/public">
    Options +FollowSymlinks

    # Prevent Direct Access to files
    <FilesMatch "\.(tpl|ini|log)">
     Order deny,allow
     Deny from all
    </FilesMatch>

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
</Directory>

<Directory "/var/www/example/public/admin/view/javascript/ckeditor">
        AddType application/x-javascript .js
        AddType text/css .css
        AddType text/xml .xml
    </Directory>

    ErrorLog /var/log/apache2/example-error.log
    LogLevel warn
    CustomLog /var/log/apache2/example-access.log combined
</VirtualHost>

    # Redirect for all non existent subdomains
    <VirtualHost *:80>
        ServerAlias *.example.com
        Redirect 301 / http://www.example.com
    </VirtualHost>

Я бы использовал текстовый аргумент permanent вместо числового статуса 301 для Redirect (или используйте RedirectPermanent в первую очередь). Но это всего лишь косметика.

В противном случае ваша конфигурация для перенаправления любого поддомена! = www на ваш канонический URL-адрес.