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

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

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

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

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

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


当前回答

从可用性的角度来看,如果你也发送请求的路径(即,你现在有什么),让你的新网站处理它会更好:

你搜索了“/products”。 不幸的是,这一页已经消失了。您是否愿意访问“/new_products”?

(更好的是,自动地做这件事。)

对于一个更大的网站来说,这显然是大量的编码和启发式,但在我看来,这在用户满意度方面是值得的(当你精心保存的梦想产品书签只是把你引向newdomain.com的首页时,这是令人沮丧的)。

其他回答

就像这样简单,这将不会携带从URL到新域的尾随查询。

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule .* https://www.newdomain.com/? [R=301,L]

可能是这样的:

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

前面的答案对我没用。

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

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

这可能是正确的工作

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>

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

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