![我应该管理多少条重写规则?](https://linux22.com/image/510752/%E6%88%91%E5%BA%94%E8%AF%A5%E7%AE%A1%E7%90%86%E5%A4%9A%E5%B0%91%E6%9D%A1%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%EF%BC%9F.png)
我正在与一个托管团队打交道,他们对于管理许多重写规则相当谨慎。您对您的网站目前管理的规则数量有何经验?
随着网站的发展和收缩,我可以看到有数十个(甚至更多)的问题出现,需要设定预期以确保这并不超出常态。
谢谢
答案1
他们关心的是管理众多规则的后勤工作,还是性能?
在前一种情况下,如果像 Alex 一样,您的大多数规则实际上来自内容移动和营销活动等内容,请考虑结合由您的 CMS 或 CRUD 工具管理的数据库生成的哈希图。您的内容人员可以对它们进行测试,然后轻松迁移到生产环境中,这对您的服务器团队来说非常轻松。
如果问题出在性能上,那么,这是一个“一段字符串有多长”的问题,但我确实在具有数百条重写规则的网站上工作过,以支持内容迁移等操作,而这对服务器的响应时间没有可衡量的影响。
答案2
您可以考虑使用http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap这将允许从哈希文件中读取单个规则。
答案3
我们最近有过一次关于此的实践经历。请参阅我的回答: https://stackoverflow.com/questions/1364673/apache-redirects-rewrite-maximum/18120886#18120886
我最近也遇到了同样的问题。由于我没有找到切实可行的答案,我们实施了 6 条 htaccess 规则,其中 3 条有 200,000 个条件。
这意味着一个 150 MB 大小的 htaccess 文件。当没有人使用这个特定网站时,它实际上可以运行半天,尽管页面加载时间只有几秒。然而第二天,我们的整个服务器都崩溃了,负载远远超过 400。(机器有 8 个核心、16 GB RAM、SAS RAID5,因此通常资源没有问题)如果您需要实现类似的东西,我建议您设计您的规则,这样它们就不需要条件了,然后将它们放在 dbm 重写映射中。这很容易为我们解决性能问题。
http://httpd.apache.org/docs/current/rewrite/rewritemap.html#dbm
答案4
显然,每个人根据具体情况需要管理的规则数量会有很大差异。我猜几十条规则并不罕见。我们通常使用重写来处理内容移动、技术变化等问题。我们的营销部门不断向我们提出搜索引擎优化请求,例如过期内容,我们通常使用重写规则来处理。我们最终还会处理诸如打印营销活动之类的事情,这些活动指定了不存在的 URL,因此我们通过添加重写规则使其有效。
为了进行比较,在我的组织中,我们的生产环境中有 140 条重写规则,涵盖 19 个子域。