我最近上线了一个新网站,校园里的一个部门将用户引导到虚拟域。
例如,www.ia.domain.com 伪装成自己的网站,而实际上是 domain.com/ia
我想要做的是将所有访问 www.ia.domain.com 的用户重定向到 domain.com/ia,
以及 www.ia.domain.com/faculty/ => domain.com/ia/faculty/
这是一个新的盒子,因此它没有原始配置。
该网站在 Apache 上运行,使用 Linux(rhel5)。
我不熟悉 mod_rewrite。我做过 301 重定向,但无法用这种方式重定向虚拟子域。
答案1
如何不使用 mod_rewrite 而使用重定向语句。
#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>
答案2
您需要为 www.ia.domain.com 设置基于名称的虚拟主机
在虚拟主机配置块中,以下 mod_rewrite 规则应该可以解决问题:
RewriteRule ^/(.*) http://domain.com/ia/$1 [R]
答案3
这是我期望在您的 Apache 配置(/etc/httpd/conf.d 或 /etc/apache2/conf.d,例如名为 domain.com.conf 的文件)中可以运行的内容:
当然,这可能需要根据您拥有的其他 Apache 配置进行调整。
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>
肖恩
答案4
如果您想要透明重定向,请尝试以下操作:
rewriteCond %{HTTP_HOST} ^www.ia.domain.com
rewriteRule ^/faculty(.*) domain.com/ia/faculty$1 [P]
Apache 服务器使用代理模块(您需要启用代理模块)进行透明重定向(无 301 或 302 http 代码)