У меня есть это в моем файле vhost, который направляет все несуществующие поддомены на главный www.
<VirtualHost *:80>
ServerName mysite.com
ServerAlias *.mysite.com
Redirect 301 / http://www.mysite.com/
</VirtualHost>
Проблема, с которой я столкнулся на данный момент, заключается в том, что некоторые люди ссылаются на мой сайт с помощью www.mysite.com.
обратите внимание на .
в конце. Это приводит к поломке CMS.
Есть ли способ изменить этот ServerAlias или альтернативный способ, чтобы в конце был подстановочный знак? Я пробовал добавить *
но это не сработало.
Это полный vhost для этого домена:
# DEV
<VirtualHost *:80>
ServerName dev.mysite.com
DocumentRoot /var/www/mysite.com/subdomain/dev/public
ErrorLog /var/log/apache2/mysite.com-error.log
LogLevel warn
CustomLog /var/log/apache2/mysite.com-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName www.mysite.com
DocumentRoot /var/www/mysite.com/public
<Directory /var/www/mysite.com/public>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
ErrorDocument 404 index.php
</Directory>
<Directory /var/www/mysite.com/public/webapp>
RewriteEngine Off
<Files *>
order allow,deny
deny from all
</Files>
<FilesMatch "\.(png|gif|jpe?g|css|js|swf|flv|htc|eot|woff|ttf|svg)$">
order allow,deny
allow from all
</FilesMatch>
</Directory>
<Directory /var/www/mysite.com/public/webapp/shared>
<Files *>
order allow,deny
allow from all
</Files>
</Directory>
ErrorLog /var/log/apache2/mysite.com-error.log
LogLevel warn
CustomLog /var/log/apache2/mysite.com-access.log combined
</VirtualHost>
# Redirect for non existent subdomains
<VirtualHost *:80>
ServerName mysite.com
ServerAlias *.mysite.com
Redirect 301 / http://www.mysite.com/
</VirtualHost>
Я отключил .htaccess, поэтому все <Directory>
Если этот vhost первый, вы не необходимость ServerAliases.
Первый виртуальный хост, указанный в списке, по определению будет получать все запросы, которые не соответствуют ServerName определенного виртуального хоста.
Удалите ServerAlias и убедитесь, что этот виртуальный хост загружен первым.