Apache:处理数千个永久重定向的最佳方法是什么?

Apache:处理数千个永久重定向的最佳方法是什么?

我们有 3000 个 301 重定向列表。我们需要帮助

  1. 把它们放在哪里最好?把这 3000 行放在 httpd.conf 中的 vhost 内似乎会很乱。
  2. 有哪些推荐的方式来处理数千个 URL?
  3. 这会对页面加载速度和 Apache 服务器负载产生多大影响?

谢谢。

答案1

您可以使用Include指令来httpd.conf在另一个文件中维护重定向。但这样做效率不高,因为每个请求都需要根据大量正则表达式进行检查。此外,每次更改文件后都需要重新启动服务器。

对于如此多的重定向,更好的方法是使用重写映射类型的指令dbm用于声明从 URI 到重定向的映射。这样会非常高效,因为 dbm 查找非常快,并且在映射发生更改后,您无需重新启动服务器,因为httpd会检查映射文件修改时间。

重写规则看起来像这样(在我的 Fedora 16 计算机上测试):

RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]

并且 dbm 图将从文本图创建,/etc/httpd/conf/redirects.txt如下所示:

/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/

使用命令

httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db

答案2

我会编写一个脚本,仅使用列表中的链接生成一个新的 VHOST。

相关内容