Я знаю, что есть несколько разных способов перенаправления с использованием 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-адрес.