【问题标题】:Redirecting a large number of URLs with htaccess or php header使用 htaccess 或 php 标头重定向大量 URL
【发布时间】:2010-04-08 07:34:53
【问题描述】:

我已经对网站进行了大修,现在有 5,000 多个来自搜索引擎和外部网站、书签服务等的传入链接,这些链接会导致页面失效或 404 错误。

很多页面都有相应的“永久链接”或已知的替换层次结构/URL 结构。

我已经开始列出带有 htaccess 或物理文件的主要重定向,仅包含标头位置重定向,这显然是不可持续的!

用 htaccess、php 标头、mysql、站点地图文件列出所有旧链接地址及其对应的新地址的最佳方法是什么,或者最好是拥有所有断开的链接并等待搜索引擎等重新索引我的网站?

在重置链接之前在这段临时时间内拥有大量重定向文件是否有任何影响?

【问题讨论】:

  • 请记住,搜索引擎之外的链接总是会被卡住并定期重新索引。我将始终(或实际上始终,无论如何)设置重定向机制作为一项政策。假设您的内容很有趣,总会有一个书签或来自某个地方的链接。最好也收集他们的访问:-)

标签: php .htaccess redirect sitemap


【解决方案1】:

为什么不以任何适当的格式(数据库或平面文件)保存此列表,并将其加载到 404 错误处理程序文件中?然后只需搜索 REQUEST_URI,并使用 header(Location:") 重定向

.htaccess

ErrorDocument 404 /404.php

404.php

<?PHP
if ($newurl=db_lookup($_SERVER['REQUEST_URI'])) {
  header("Location: $newurl", 1, 301);
}

【讨论】:

  • 这不是导致 2 次重定向吗?一个到404.php,然后到$newurl
  • 内部重定向到404,流程相同
【解决方案2】:

标题重定向绝对不是正确的答案。如果您想保留您的 SEO,您需要进行 301 重定向。我不知道您网站的路径结构是什么,但这应该可以通过一组巧妙的 mod_rewrite 规则来实现。如果没有别的,那就是一大堆

Redirect 301 /old-path /new-path

用脚本生成应该会让你渡过难关。

重定向绝对有影响。如果您使用 0 秒超时进行元刷新,Google 会接受它作为真正 301 重定向的适当替代品,但其他人可能不会。如果您不使用该特定方法,您将失去所有的链接果汁。

【讨论】:

  • 你认为这个重定向指令会发送一些其他的头吗,呵呵? :)
  • PHP 的 header() 函数使用 302,其处理方式类似于临时重定向。因此,您应该在调用header('Location: /old-path') 之前发出header('HTTP/1.1 301 Moved Permanently');,以确保使用301 重定向。
  • 这就是我的意思;我应该更明确一点。 +1
【解决方案3】:

我最近所做的是使用由传入 URL 中的特定模式触发的重写模块从具有新 .htaccess 的文件夹中请求新地址,在该文件夹中我对所有相关 URL 进行了分组。因此,我可以通过从我的数据库中转储相关参数来生成并在适当的时候维护一个单独的文件。

举个例子:

在我的站点根文件夹的 .htaccess 中,我有这样的内容:

RewriteRule ^resource/show/(.*)_([0-9]*)/ @987654321@$2 [R=301,L]

然后,在文件夹 bulkredirect/dam2news 中,我放置了一个带有新重定向的新 .htaccess 文件,例如:

RewriteRule 1119$ http://www.mysite.no/index.php?id=843&tx_ttnews[tt_news]=2594 [R=301,L]

现在,这里的关键当然是使两个 ID(在本例中为 1119 和 2594)匹配,我通过一个巧妙的连接数据库查询来做到这一点。您可能还需要制定与您的情况相匹配的正则表达式。但一般的想法是有一个单独的.htaccess 文件,既可以避免主文件混乱,又可以方便以后的维护(可能只是重复数据库查询并将其转储到那里)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多