1

我们有一个现有的站点,我们称之为ourdomain.com。我们将内容从一个正在关闭的站点转移过来,我们称之为 legacydomain.com。我们将服务器上的旧域指向 /public_html/ 文件夹。

我需要的是一个 .htaccess,它将 legacydomain.com 或 legacydomain/anything-here 重定向到 ourdomain.com/legacydomain/ 没有附加到 URL 的任何其他内容。

但是,我还需要一些特定的 URL 来重定向到某些目的地,而且它们并不真正遵循模式。例如:

legacydomain.com/something.html 到 ourdomain.com/legacydomain/something.html

legacydomain.com/another.html 到 ourdomain.com/legacydomain/folder/another.html

这是我尝试过的:

RewriteCond %{HTTP_HOST} ^www\.legacydomain\.com$ [NC]
RewriteRule (.*) http://www.ourdomain.com/legacydomain/$1 [R=301,L]

Redirect 301 /something.html http://www.ourdomain.com/legacydomain/another.html

它主要工作,但如果我访问 legacydomain.com/anything-here 它甚至不会尝试重写,它只是保持域相同并给出 404。而且我有一种感觉,即使它确实有效,有些东西像 legacydomain.com/anything-here/more-stuff 将被重写为我不想要的 ourdomain.com/legacydomain/anything-here/more-stuff 。

.htaccess 中唯一的另一件事是将非 www 重写为 www,以及标准的 WordPress 内容。任何指导将不胜感激。上面的所有内容都应该在示例前面有一个 http:// 和 www,但它不会让我发布那么多“链接”。

4

2 回答 2

1

对于每个特定的重写,您需要两行,如下所示。根据您现有的配置,如果这不起作用,您可能需要在 RewriteRule 的开头在 something.html 前面添加一个斜杠。

RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule something.html http://ourdomain.com/legacydomain/something.html [R=301,L]

然后你会使用一个包罗万象的一切。

RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule (.*) http://ourdomain.com/legacydomain/ [R=301,L]
于 2012-12-06T21:58:47.930 回答
0

就个人而言,我会选择不使用 mod_rewrite 的最简单的解决方案。首先,只需将特定页面重定向到他们需要去的任何地方。

Redirect 301 /something.html http://ourdomain.com/legacydomain/something.html
Redirect 301 /another.html http://ourdomain.com/legacydomain/another.html

然后,只需将其他所有内容重定向到基本 URL。

RedirectMatch 301 (.*) http://ourdomain.com/legacydomain/

这些必须放在RewriteEngine on语句之前的 .htaccess 文件中。

于 2012-12-06T21:37:04.713 回答