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

Redirecting old sub domain to new Domain with alias parameter in URL

我已成功将旧子域重定向到新子域 这里是 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 中。我该怎么做?

定义这些重定向的常见位置是 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/ [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/ [L,R=301]