1

我在一个存在多年(10 年以上)的域上有一个站点,现在正在将该站点从一个 CMS 更改为另一个。这是一个移动内容的漫长过程,其中一些内容不会移动,并且应该在未来几年内共存。

我已经将旧站点从根目录 (www.example.com) 移动到子文件夹 (www.example.com/_old)。旧站点具有以下 .htaccess 来强制 www。自 2007 年初以来在我的域上。我已在 (www.example.com/_old/) 文件夹中的 .htaccess 上删除了此内容。

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

现在我在另一个子目录(www.example.com/dp/)中声明了新闻站点,以保持根目录为空,仅使用 .htaccess 并重写,但我真正想要的是:

  1. 我想访问没有 www (example.com) 的域根目录上的新站点
  2. 我希望旧网站仍然作为“世界”中所有旧链接的主要登录页面 - 主要是 Google(www.example.com/_old/[whatever] 来自 www.example.com/[whatever]
  3. 我想确保当我将页面移动到新站点(www.example.com/_old/oldpage.html 到 example.com/newpage.html)时,我可以将该 URL 专门重定向到新站点以避免重复内容.

我在这里:

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^(.*)$ /_old/$1 [L,R=301]

RewriteCond %{HTTP_HOST} example.com
RewriteCond %{REQUEST_URI} /dp/
RewriteRule ^(.*)$ http://example.com/$1 [L,R=307]

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

这仍然是子文件夹 /dp/ 中的新站点

4

1 回答 1

0
#if file or directory doesn't exist, check the _old directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/_old
RewriteRule .* /_old/$0 [L]
#note that I omitted the redirect flag. That way the old url just work like they used to. If you really want you can just add them, but please, just give it a try. This might even fix problem nr. 3

# remove www. from everything except _old urls
RewriteCond %{HTTP_HOST} www\.example\.com
RewriteCond %{REQUEST_URI} !/_old
RewriteRule ^(.*)$ http://example.com/$1 [L,R=307]

只是为了澄清一点。我用户请求一个像 www.example.com/seafood.html 这样的旧链接,如果内部重写为 /_old/seafood.html,则该请求。如果将来您想为此创建一个新页面,您只需在根目录中创建seafood.html。此文件将自动优先于 /_old 文件夹中的相同文件名。

于 2013-03-08T19:15:05.580 回答