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

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

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

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

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

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


当前回答

只是为了澄清,在删除托管重定向这是在路上,我原来的解决方案也起作用:

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

其他回答

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

这里,这个重定向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]

如果您要将旧站点重定向到的新域位于不同的主机上,您可以简单地使用重定向

Redirect 301 / http://newdomain.com

这将把所有来自olddomain的请求重定向到newdomain。

重定向指令将不起作用或可能导致重定向循环,如果你的newdomain和olddomain都在同一个主机上,在这种情况下,你需要使用mod-rewrite重定向基于请求的主机头。

RewriteEngine on


RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [NE,L,R] 

我尝试了user968421的答案和OP的解决方案,但浏览器弹出了结帐页面的安全错误。我不能告诉你确切的原因。

我们的主机(Site Ground)也搞不清楚。

最终的解决方案很接近,但对user968421的答案进行了轻微的调整(边注:与OP不同,我试图重定向到相应的页面,而不仅仅是到主页,所以我维护了从user968421的答案的反向引用[域名后的$1]):

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

从Host Gator文章推荐的这个htaccess重定向生成器得到了调整(绝望的时间,绝望的措施,amiright?)

可能是这样的:

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