假设老域名: a.com ,新域名: b.com 请教如何配置.htaccess,将原域名所有URL 301跳转到新域名,包括二级域名
如:www.a.com  ->  www.b.com
    a.com      ->  www.b.com 
    shop.a.com ->  shop.b.com
    photo.a.com -> photo.b.com
...................... 等等我在 .htaccess添加了以下规则,会把所有URL转向到www.b.com ,无法满足要求RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{HTTP_HOST} (.*)a.com [NC]
RewriteRule ^(.*)$ http://www.b.com/$1 [R=301,NC]
注:服务器环境 Apache + PHP

解决方案 »

  1.   

    http://apache.chinahtml.com/mod/mod_rewrite.html自己照着写。
      

  2.   

    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$ 
    RewriteRule ^(.*) %{HTTP_HOST}$1 [C] 
    RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L] 
      

  3.   

    qq120848369 兄,我按你的方法测试了www.a.com -> www.b.com 正常
    test1.a.com -> test1.b.com 正常
    test2.a.com  -> test2.b.com 正常当老域名后面加上具体的页面,就无法跳转
    例如:www.a.com/test.html  出错,正常情况下应该会跳转到 www.b.com/test.html
      

  4.   

    RewriteEngine on  
    RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$  
    RewriteRule ^(.*) %{HTTP_HOST}$1 [C]  
    RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]这是为什么,(.*)没匹配成功还是C链没有正确拼接呢.
      

  5.   

    你试着加点:RewriteEngine on  
    RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$  
    RewriteRule ^(.*) %{HTTP_HOST}/$1 [C]  
    RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]这样加个/好不好用呢。
      

  6.   

    RewriteEngine on   
    RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$   
    RewriteRule ^(.*) %{HTTP_HOST}/$1 [C]   
    RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]
    以上规则测试正常,谢谢qq120848369