2010-05-20 155 views
2

使用RegEx或Multiples规则的单个RewriteRule更好吗?规则的数量较少,需要服务器查询?会有任何性能差异?什么是.htaccess RewriteRule最佳实践?

继承人是一个例子,几乎所有的正则表达式组可选一条规则:

RewriteRule ^gallery/?([\w]+)?/?([\w]+)?/?([\d]+)?/?([\w]+)/?$ /gallery.php?$1=$2&start=$3&by=$4 [NC] 

这里有一些规则列表将取代上面的一个:

RewriteRule ^gallery/category/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 
RewriteRule ^gallery/tag/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 

我会很高兴听到您的选择或个人经验。

回答

2

不是说我已经对任何东西进行了基准测试,但是如果功能相同,我猜想单个重写规则比几个更有效。无论如何,重写规则(甚至数百)很少会有明显的性能下降(我几年前已经读过这个基准),除非他们代理请求或统计路径。

总之,我建议你去更可读的东西。

在您的具体示例中,我认为单个正则表达式比重复更具可读性。但是,它们并不等同 - 第一个总是包含所有参数。如果这有所作为(很可能不会),那么复制可能会更好。

+0

感谢您的意见,我想我会使用单个查询,因为它会更容易维护,灵活和非冗余。 – Pablo 2010-05-21 05:41:24