.htaccess 301将旧域中的所有页面redirect到新域中的单个页面

我正在寻找将旧域的每个页面redirect到新域的单个页面 。 它也应该redirectwww和非www版本。 对域名old.com的每一个请求,不pipe它是什么,应该导致www.new.com根。

old.com/1.php www.old.com/2.php old.com/2.php old.com/links/index.php old.com/about-us.html old.com/?string=1 

应该全部redirect到:

www.new.com/

我正在寻找一个.htaccess解决scheme。

您可以在old.com虚拟主机中使用RedirectMatch

 RedirectMatch permanent .* http://www.new.com/ 

Redirect将匹配URI的尾部追加到重定向URI,但使用RedirectMatch ,您可以选择要使用圆括号和$number引用传输的部分(如果有)。

如果旧域和新域必须是磁盘上同一个文档根目录的别名,那么你可能必须使用mod_rewrite

 RewriteEngine on RewriteCond %{HTTP_HOST} old\.com$ RewriteRule .* http://www.new.com/ [L,R=301] 

这已经被回答了,但是这里的代码完全包含了有用的评论,所以如果人们忘记了它的作用,那么人们可以参考以后回顾。

把它放在你的.htaccess文件中:

 ## Each and every page on old domain redirects to single page ## By appending question mark to new domain, query strings are removed RewriteEngine on RewriteCond %{HTTP_HOST} old\.com$ RewriteRule .* http://www.new.com/? [L,R=301] 

您也可以重定向到另一个域的子目录,就像我需要这样做的情况:

 ## Each and every page on old domain redirects to single page ## By appending question mark to new domain, query strings are removed RewriteEngine on RewriteCond %{HTTP_HOST} old\.com$ RewriteRule .* http://www.new.com/sub-directory/? [L,R=301] 

这将处理所有的重定向,包括查询字符串。 原谅格式化,我正在打电话:)

 RewriteCond %{HTTP_HOST} old\.com$ RewriteCond %{QUERY_STRING} .+ RewriteRule (.*) http://www.new.com$1?%{QUERY_STRING} [L,R=301,QSA] RewriteCond %{HTTP_HOST} old\.com$ RewriteRule (.*) http://www.new.com$1 [L,R=301,QSA]