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

vhost перенаправляет несуществующие поддомены

У меня есть это в моем файле 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 ​​и убедитесь, что этот виртуальный хост загружен первым.