.htaccess 301将旧域上的所有页面重定向到新域上的单个页面

时间:2013-02-24 22:00:06

标签: apache .htaccess redirect http-status-code-301

我希望将旧域上的每个页面重定向到新域上的单页。它还应该重定向www和非www版本。域名old.com的每一个请求,无论它是什么,都应该通向www.new.com root。

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

应全部重定向到:

www.new.com /

我正在寻找.htaccess解决方案。

3 个答案:

答案 0 :(得分:14)

您可以在old.com vhost中使用RedirectMatch

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

Redirect将匹配的URI的尾部添加到重定向URI,但是RedirectMatch由您决定要使用括号和{{1}传输的部分(如果有的话)引用。

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

$number

答案 1 :(得分:4)

这已经得到了回答,但是这里的代码总共包含了有用的评论,因此人们可以参考以后再回过头来看看它是什么。

将它放在.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]

答案 2 :(得分:0)

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

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]