我们有一个3000 301redirect列表。 我们需要帮助
谢谢。
您可以使用httpd.conf
Include
指令来维护其他文件中的redirect。 但是效率不高,因为每个请求都需要用很多正则expression式来检查。 每次文件更改后,都需要重新启动服务器。
对于这么多的redirect来说,更好的方法是使用dbm
types的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。