将用户从之前的子域名重定向到新的 URL

将用户从之前的子域名重定向到新的 URL

我最近上线了一个新网站,校园里的一个部门将用户引导到虚拟域。

例如,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 代码)

相关内容