我将使用哪个重定向规则来重定向olddomain下的所有页面。示例被重定向到newdomain.example?

该网站有一个完全不同的结构,所以我想在旧域下的每个页面都被重定向到新的域索引页。

我认为这将(在旧域。例如基本目录):

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.example/ [R=301]

但如果我导航到olddomain。我被重定向到newdomain.example/somepage。我期待重定向到newdomain。不带页后缀的示例。

我怎么才能不提最后一部分?


当前回答

下面的答案可能会导致无限重定向循环…

这里,这个重定向URL中域名之后的所有内容到新域名URL中完全相同的副本:

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/ [R=301,L]
www.example.net/somepage.html?var=foo

重定向:

www.newdomain.com

其他回答

前面的答案对我没用。

我使用了这个代码。如果您正在使用OSX,请确保使用正确的格式。

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?OLDDOMAIN\.com$ [NC]
RewriteRule (.*) http://www.NEWDOMAIN.com/ [R=301,L]

这是apache旧版本中的一个错误(因此mod_rewrite),如果路径被更改,路径前缀会附加到重写的路径上。在这里看到的

我认为它在apache2 V2.2.12中被修复了,有一个你需要使用的特殊标志,当我找到它时,我会在这里添加它,(我认为它是NP for No Path)

RewriteRule ^(.*)$ http://newdomain.com/ [??]

尝试这种方法重定向到主页新域,它为我工作:

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^(.*)$ "https\:\/\/newdomain\.com\/" [R=301,L]

如果你想从某个位置重定向到子域,你可以使用:

重定向301 /Old-Location/ http://subdomain.yourdomain.com

我的名声不允许我评论一个答案,但我只是想指出,这里评分最高的答案有一个错误:

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com$1 [R=301,L]

1美元前面应该有斜杠,是吗

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]