转发子域名

如何将//sub.domain.com转发到//sub.domain.com

这是一个虚拟主机

 <VirtualHost *:443> Include /etc/apache2/vhosts.d/ssl.conf.include DocumentRoot /scripts/htdocs/domain-live ServerName sub.domain.com ErrorLog /var/log/apache2/smartdox-wellpoint_error CustomLog /var/log/apache2/smartdox-wellpoint_access combined <Directory /scripts/htdocs/smartdox-live> Options -Indexes FollowSymLinks Includes AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:433> Include /etc/apache2/vhosts.d/ssl.conf.include ServerName www.sub.domain.com RewriteEngine On Redirect 303 / https://sub.domain.com </VirtualHost> 

 ServerAlias *.sub.domain.com 

到vhost-config。

正如其他人所说…你可以接受另一个域作为别名…或者你可以设置一个重写规则,将redirect到具有别名正确的站点名称。

 RewriteCond %{REMOTE_HOST} =www.sub.domain.com RewriteRule ^/(.*) https://sub.domain.com/$1 

如果你真的不想别名…添加第二个虚拟主机与重写规则…并将服务器名称设置为www.sub.domain.com

尝试放置

 ServerAlias www.sub.domain.com 

在ServerName之后

与TheCompWiz类似,我build议通过添加ServerAlias来接受连接。

而不是redirect一个特定的域,我build议你select一个规范域,然后使用这个重写规则。

 RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.example.com/$1 [L,R] 

此规则说明,如果主机不匹配www.example.comredirect到www.example.com。

所以在你的情况下,你会匹配你的子域。

如果你想做这样的redirect,最好的办法是设置一个像这样的额外的VirtualHost,然后像这样写一个重写:

 <VirtualHost *:443> ServerName www.sub.domain.com Redirect permanent / https://sub.domain.com </VirtualHost> 

要将所有http请求redirect到https,您可以使用另一个VirtualHost,例如:ServerName sub.domain.com ServerAlias http://www.sub.domain.com

 Redirect permanent / https://sub.domain.com 

这需要安装并启用Apache模块mod_alias。