假设我有一个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 ,服务器应该自动将他redirect到sth.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文件:
/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>
/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 (应该是默认的)