我希望将旧域上的每个页面重定向到新域上的单页。它还应该重定向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解决方案。
答案 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]