我的 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。