Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess 301将旧域上的所有页面重定向到新域上的单个页面_Apache_.htaccess_Redirect_Http Status Code 301 - Fatal编程技术网

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

Apache .htaccess 301将旧域上的所有页面重定向到新域上的单个页面,apache,.htaccess,redirect,http-status-code-301,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解决方案。您可以在old.com

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

您可以在old.com vhost中使用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]

适用于大多数页面,但不适用于www.old.com/?string=1第二种解决方案也不会重定向www.old.com/?string=1(这相当于www.old.com/index.php?string=1)。它确实会重定向文件夹形式的所有URL(www.old.com/folder/)@DanHorvat如果在新域中添加问号
,则查询字符串将被删除
重写规则。*http://www.new.com/? [L,R=301]
为了保留所有查询字符串,请在包含重写规则的行末尾添加
[QSA]
## 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]