2010-05-20 5 views
2

Лучше ли иметь один RewriteRule с группой RegEx или несколько правил с меньшим количеством RegEx для запроса сервера? Будут ли какие-либо различия в производительности?Что такое .htaccess RewriteRule лучшая практика?

Heres пример одно правило почти со всеми RegEx группами как опция:

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

Не то, чтобы я тестировал что-либо, но я бы предположил, что одно правило перезаписи более эффективно, чем несколько, если функциональность эквивалентна.

Как бы то ни было, правила перезаписи (даже сотни) редко имеют значительный выигрыш в производительности (я прочитал этот показатель за несколько лет назад), если они не проксируют пути запроса или stat.

В целом я бы посоветовал вам перейти к тому, что более читаемо для вас.

В вашем конкретном примере я считаю, что одно регулярное выражение является гораздо более читаемым, чем дублирование. Однако они не эквивалентны - первый всегда включает в себя все параметры. Если это имеет значение (скорее всего, это не так), может быть лучше дублировать.

+0

Спасибо за ваш ввод, я думаю, что я буду использовать один запрос, так как он будет легче поддерживать, гибко и не избыточно. – Pablo

Смежные вопросы