我最近上了一个新的网站,其中一个部门把用户引导到一个虚拟域名。
例如,www.ia.domain.com将自己伪装成自己的网站,这真的是domain.com/ia
我想要做的是将所有访问www.ia.domain.com的用户redirect到domain.com/ia,
以及www.ia.domain.com/faculty/ => domain.com/ia/faculty/
这是在一个新的框,所以它没有原来的configuration。
该网站正在使用Linux(rhel5)在Apache上运行。
我不熟悉mod_rewrite。 我做了301redirect,但我无法redirect一个虚拟子域的方式。
如何不使用mod_rewrite,而是使用redirect语句。
#Virtual Host for IA sub web <VirtualHost *:80> ServerName www.ia.domain.com ServerAlias <other domain names they want to associate with this directory; ex: ia.domain.com> Redirect permanent / http://www.domain.com/ia_new_web_location/ </VirtualHost>
您需要为www.ia.domain.com设置一个基于名称的虚拟主机
在虚拟主机configuration块中,mod_rewrite的以下规则应该做的诀窍:
RewriteRule ^/(.*) http://domain.com/ia/$1 [R]
下面是我期望的工作,在你的Apacheconfiguration(/etc/httpd/conf.d或/etc/apache2/conf.d,一个名为domain.com.conf的文件)中:
当然,这可能需要根据您的其他Apacheconfiguration进行调整。
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.ia.example.com ServerAlias ia.exmaple.com Redirect permanent /(.*) http://www.example.com/ia/$1 </VirtualHost> <VirtualHost *:80> # Your normal website configurations here </VirtualHost>
肖恩
如果你想要一个透明的redirect,试试这个:
rewriteCond %{HTTP_HOST} ^www.ia.domain.com rewriteRule ^/faculty(.*) domain.com/ia/faculty$1 [P]
Apache服务器使用代理模块(您需要启用代理模块)进行透明redirect(不需要301或302 http代码)