Apache:处理数千个永久redirect的最佳方式是什么?

我们有一个3000 301redirect列表。 我们需要帮助

  1. 最好的地方放什么? 这似乎把这些3000行内的虚拟主机在httpd.conf将是一团糟。
  2. build议如何处理数千个url?
  3. 它会影响页面加载速度和Apache服务器负载多less?

谢谢。

    您可以使用httpd.conf Include指令来维护其他文件中的redirect。 但是效率不高,因为每个请求都需要用很多正则expression式来检查。 每次文件更改后,都需要重新启动服务器。

    对于这么多的redirect来说,更好的方法是使用dbmtypes的RewriteMap指令来声明一个从URI到redirect的映射。 这样做会很高效,因为dbm查找速度非常快,在映射更改之后,您不需要重新启动服务器,因为httpd检查映射文件修改时间。

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

     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创build,如下所示:

     /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 

    我会写一个脚本,只是从列表中的链接生成一个新的VHOST。