4

我正在重组一个网站,其中有大量内容目前停在看起来像这样的 URL 上。

http://string.domain.com/year/month/dd/string-pulled-from-title

出于各种原因,我想将所有新内容停放在看起来像这样的 URL

http://www.domain.com/blogs/string/year/month/dd/string-pulled-from-title

我想对未来的内容进行更改,但不希望所有旧内容都变为 404。

我相信我的 htaccess 中的 301 重定向规则可以解决问题,将所有通过旧链接传入的引用流量发送到新格式。

但是这个规则应该是什么样的?我已经阅读了一些教程,但在任何示例中都没有找到这种确切的情况。

请注意,我不想对所有子域执行此操作,仅对大约 10 个特定子域执行此操作。因此,如果有人可以帮助我找出其中一个,那么我可以在我的 htaccess 中为每个子域复制粘贴 10 次并进行设置。

4

1 回答 1

4

将其放入.htaccess旧站点的文件中(将域调整为您的实际域):

RewriteEngine On
RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [R=301]

这将在旧站点抓取这部分 URL:

year/month/dd/string-pulled-from-title

并将其重定向到新位置下的新站点:

blogs/string/year/month/dd/string-pulled-from-title

或者,如果您想要更多变量,例如,无需自定义修复 each .htaccess,请将其放入每个子域的文件中:

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

如果您要重定向到同一个域,并且它包含www,请将重写规则调整为以下内容:

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

请注意第二个RewriteCond检查以确保请求的 URL包含前导,如果目标 URL 本身包含并且也会尝试重定向该子域www,这可能会导致无休止的重定向。www

于 2009-08-07T11:29:20.600 回答