使用 URL 中的别名参数将旧子域重定向到新域

Posted

技术标签:

【中文标题】使用 URL 中的别名参数将旧子域重定向到新域【英文标题】:Redirecting old sub domain to new Domain with alias parameter in URL 【发布时间】:2016-08-07 03:03:05 【问题描述】:

我已成功将旧子域重定向到新子域 这是httpd.conf

<VirtualHost *:80>
   ServerName  abcd.com
   ServerAlias *.abcd.com
   RewriteEngine on
   Redirect 301 / http://pqr.com/
</VirtualHost>

以下链接:mumbai.abcd.com/venue/320089-girgaum-chowpatty 被重定向到 http://pqr.com/venue/320089-girgaum-chowpatty

但我想实现的是:http://pqr.com/mumbai/320089-girgaum-chowpatty

也只是 mumbai.abcd.com 应该重定向到 http://prq.com/mumbai

我想获取服务器别名并附加到新域的 url 中。我该怎么做?

【问题讨论】:

mod-rewrite 怎么样? 【参考方案1】:

定义这些重定向的常见位置是 Web 根目录中的 .htaccess,而不是 httpd.conf,因为它更加灵活并且不需要您重新启动 apache。

所以我建议你从httpd.conf 中删除这些行:

RewriteEngine on
Redirect 301 / http://pqr.com/

并在根目录index.php 旁边创建一个.htaccess 文件,其中包含以下内容:

RewriteEngine on

# Redirect mumbai.abcd.com to prq.com/mumbai
RewriteCond %HTTP_HOST ^mumbai\.abcd\.com$
RewriteRule ^$ http://prq.com/mumbai/ [L,R=301]

# Redirect mumbai.abcd.com/something/123456-foo to prq.com/mumbai/123456-foo
RewriteCond %HTTP_HOST ^mumbai\.abcd\.com$
RewriteRule ^(.+)/([^/]+)(/?)$ http://prq.com/mumbai/$2 [L,R=301]

如果mumbai.abcd.com 只是一个示例,并且您有更多子域,请尝试以下操作:

RewriteEngine on

# Redirect *.abcd.com to prq.com/*
RewriteCond %HTTP_HOST ^([^/.]+)\.abcd\.com$
RewriteRule ^$ http://prq.com/%1/ [L,R=301]

# Redirect *.abcd.com/something/123456-foo to prq.com/*/123456-foo
RewriteCond %HTTP_HOST ^([^/.]+)\.abcd\.com$
RewriteRule ^(.+)/([^/]+)(/?)$ http://prq.com/%1/$2 [L,R=301]

【讨论】:

以上是关于使用 URL 中的别名参数将旧子域重定向到新域的主要内容,如果未能解决你的问题,请参考以下文章

在 .htaccess 中使用 HTTPS 将旧域重定向到新域

HTACCESS-将旧域重定向到新域

使用 Apache 将旧域上的旧路径重定向到新域上的新路径

301 使用 .htaccess 从旧域重定向到新域

htaccess 域重定向到新域

将所有请求从旧域重定向到新域