Apache重定向/重写最大值

时间:2009-09-01 21:07:52

标签: performance apache redirect rewrite max

我有一个从旧系统到新系统的迁移项目。迁移到新系统将为正在迁移的对象创建新的唯一ID。但是,我的用户和搜索索引将包含带有旧ID的URL。我想设置一个apache重定向或重写来处理这个问题,但我担心大量对象的性能(我希望有大约500K旧的id到新的id映射)。

有没有人在这个规模上实现这个?或者知道apache是​​否可以支持这个重大的重定向映射?

4 个答案:

答案 0 :(得分:2)

如果您有一组固定的映射,则应该提供该类型的mod_rewrite rewrite map 哈希文件一试。

答案 1 :(得分:2)

我最近有同样的问题。由于我没有找到实际答案,我们实施了htaccess 6规则,其中3条规则有200,000条 这意味着一个大小为150 MB的htaccess文件。实际上,当没有人使用这个特定的网站时,即使页面加载时间在几秒钟内,它仍然可以使用半天。然而第二天,我们的整个服务器受到了重创,负载远远超过400.(机器是8核,16 GB RAM,SAS RAID5,因此通常没有资源问题)

我建议你是否需要实现这样的事情。设计规则,因此它们不需要条件,并将它们放在dbm重写映射中。这很容易解决我们的性能问题。

http://httpd.apache.org/docs/current/rewrite/rewritemap.html#dbm

答案 2 :(得分:1)

你能用较少数量的规则来表达重写吗?是否有将旧URL链接到新URL的模式?

如果没有,我会关注Apache的500K +重写映射,这只是它的舒适区域。不过,它可能会给你带来惊喜。

听起来我需要编写一个数据库支持的应用程序来处理重定向,映射本身存储在数据库中。这会扩大得更好。

答案 3 :(得分:1)

我认为这是一个古老的话题,但你们每个人都找到了解决方案吗?

我有一个案例,开发人员使用htaccess在RedirectMatch文件中使用.htaccess重定向超过30,000个网址。

考虑到此文件的大小,我担心性能和管理错误。

我建议的是,因为所有旧网址都有:

/sub/####

他们将此移动到数据库并创建

/sub/index.php

重定向所有请求:

www.domain.com/sub/###

www.domain.com/sub/index.php

然后让index.php发送重定向,因为可以在数据库中查找新的URL和旧ID。

这样,只有对旧URL的HTTP请求才会发生重写过程而不是每个HTTP请求。