Что такое наилучшая практика .htaccess RewriteRule? - PullRequest
2 голосов
/ 20 мая 2010

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

Вот пример отдельного правила с почти всеми группами 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]
...

Буду рад услышать ваши варианты или личный опыт.

1 Ответ

2 голосов
/ 20 мая 2010

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

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

В итоге я бы посоветовал вам заняться тем, что для вас более читабельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...