RewriteRules中有多行或多个匹配?

时间:2014-02-28 23:14:31

标签: apache .htaccess mod-rewrite url-rewriting

说我要做很多改写:

  • /苹果
  • /香蕉
  • /樱桃

需要重定向到

  • /果/苹果
  • /果/香蕉
  • /果/樱桃

依此类推,加上相同的蔬菜清单到/ veg / vegetable-name,cake to / cake / cake-name。

你会在每一行上进行重定向,还是将它们包装成一条长规则:

/(apples|bananas|cherries) 

/fruit/$1

这两种方法都存在性能问题吗?

1 个答案:

答案 0 :(得分:2)

我会使用单一规则,但前提是: 我对{苹果,香蕉,樱桃}的选择很有信心 2.我确信输入不会超过这个选项限制,或者如果超过这个限制就会有一个很好的异常处理机制(也就是说,如果用户发送/ papaya的请求,这不在列表中)< / p>

如果列表经常更新,或者列表很大,我宁愿使用重写映射。这也允许我使用地图的默认值来定义常见的异常处理。此外,一张地图可以满足所有水果,蔬菜,汽车等情况。

从性能角度来看,具有OR'd条件的单个规则将比具有一个条件的多个规则更优化。

重写映射不如重写规则优化,但在某些时候,我将开始优先考虑可读性和可维护性而不是性能。