使用 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 中的别名参数将旧子域重定向到新域的主要内容,如果未能解决你的问题,请参考以下文章