2016-04-15 118 views
1

我成功重定向旧的子域新 这里就像是httpd.conf重定向旧子域到新的域别名为参数,URL

<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中。我怎样才能做到这一点?

+0

mod-rewrite呢? – heximal

回答

0

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

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

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

,并创建一个.htaccess文件在你旁边根index.php这些内容:

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]