我正在寻找将旧域的每个页面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]