vhost 重定向不存在的子域名

vhost 重定向不存在的子域名

我的 vhost 文件中有这个,它将所有不存在的子域指向主 www。

<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias *.mysite.com
    Redirect 301 / http://www.mysite.com/
</VirtualHost> 

我目前遇到的问题是,有些人链接到我的网站时在末尾添加了www.mysite.com.通知.。这导致 CMS 崩溃。

有没有办法修改此 ServerAlias 或以其他方式使其末尾带有通配符?我尝试添加,*但没有成功。

这是该域的完整虚拟主机:

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

答案1

如果这是第一个虚拟主机,则不需要需要服务器别名。

根据定义,第一个列出的虚拟主机将接收所有与特定虚拟主机的服务器名称不匹配的请求。

删除 ServerAlias 并确保首先加载此 vhost。

相关内容