假设老域名: 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
如: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
RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]
test1.a.com -> test1.b.com 正常
test2.a.com -> test2.b.com 正常当老域名后面加上具体的页面,就无法跳转
例如:www.a.com/test.html 出错,正常情况下应该会跳转到 www.b.com/test.html
RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]这是为什么,(.*)没匹配成功还是C链没有正确拼接呢.
RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$
RewriteRule ^(.*) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]这样加个/好不好用呢。
RewriteCond %{HTTP_HOST} ^[^\.]+\.a\.com$
RewriteRule ^(.*) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^\.]+)\.a\.com(.*)$ http://$1\.b\.com$2\?%{QUERY_STRING} [R=301,L]
以上规则测试正常,谢谢qq120848369