将子域redirect到子域Apache2

假设我有一个IP地址为1.2.3.4的Web服务器。

我也有2个子域名:

sth.city.eu inf.xyz.city.eu 

我在Ubuntu服务器上使用Apache 2。 这是我的/etc/apache2/sites-enabled/site文件:

 <VirtualHost *:80> ServerName www.sth.city.eu ServerAlias sth.city.eu ServerAlias inf.xyz.city.eu ServerAlias www.inf.xyz.city.eu ServerAdmin webmaster@localhost DocumentRoot /var/www/city/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/city/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error_city.log CustomLog ${APACHE_LOG_DIR}/access_city.log combined </VirtualHost> 

我想这样做:如果有人会去inf.xyz.city.eu ,服务器应该自动将他redirectsth.city.eu (更改url)。 这是可能的 – 我怎么能做到这一点? 我search谷歌,发现Redirect ,试图使用它像这样:

 Redirect http://inf.xyz.city.eu http://www.sth.city.eu 

但它没有工作。

我相信你可以通过设置2个虚拟主机来解决这个问题:

 <VirtualHost *:80> ServerName inf.xyz.city.eu ServerAlias www.inf.xyz.city.eu Redirect / http://sth.city.eu/ </VirtualHost> <VirtualHost *:80> ServerName www.sth.city.eu ServerAlias sth.city.eu ServerAdmin webmaster@localhost [...] </VirtualHost> 

如果你有mod_rewrite,你可以使用RewriteRules:

 RewriteEngine On RewriteCond %{HTTP_HOST} ^inf\.xyz\.city\.eu [NC] RewriteRule (.*) http://sth.city.eu/$1 [R=301,QSA,L] 

@mikolan说的是:

/etc/apache2/sites-enabled/你应该有2个vhost文件:

  1. 文件: /etc/apache2/sites-enabled/sth.city.eu
 <VirtualHost *:80> ServerName sth.city.eu ServerAlias www.sth.city.eu ServerAdmin webmaster@localhost DocumentRoot /var/www/city/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/city/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/sth.city.eu.error.log CustomLog ${APACHE_LOG_DIR}/sth.city.eu.access.log combined </VirtualHost> 
  1. 文件: /etc/apache2/sites-enabled/inf.xyz.city.eu
 <VirtualHost *:80> ServerName inf.xyz.city.eu ServerAlias www.inf.xyz.city.eu Redirect / http://sth.city.eu/ LogLevel warn ErrorLog ${APACHE_LOG_DIR}/inf.xyz.city.eu.error.log CustomLog ${APACHE_LOG_DIR}/inf.xyz.city.eu.access.log combined </VirtualHost> 

当然,这两个文件都是在/etc/apache2/sites-available ,并且都是启用的

 sudo a2ensite inf.xyz.city.eu sudo a2ensite sth.city.eu sudo service apache2 restart 
  • 每次启用/禁用站点/模块时, reload就足够了,但在testing时, restart更安全( 和平思维

  • 检查是否启用了mod_alias (应该是默认的)

  • 检查日志,看看你得到什么错误:权限不足,你甚至没有得到请求?