Я пытаюсь настроить перезапись так, чтобы запрошенные URL-адреса вели себя следующим образом
/ бюллетень / 2019/05
переписано
/newsletter.php?year=2019&month=05
и
/ бюллетень / 2019/05 / да
переписано
/newsletter.php?year=2019&month=05&app=yes
Для apache это сработало, как и ожидалось:
RewriteRule ^newsletter/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2 [L]
RewriteRule ^newsletter/([^/]+)/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2&app=$3 [L]
В nginx я использую следующее на сервере {}:
location /newsletter/ {
rewrite "^/newsletter/([^/]+)/([^/]+)$"
/newsletter.php?year=$1&month=$2?;
rewrite "^/newsletter/([^/]+)/([^/]+)/([^/]+)$"
/newsletter.php?year=$1&month=$2&app=$3?;
}
Оба варианта работают, но вариация с переменной 'app' загружается мгновенно, в то время как более короткая вариация всегда занимает около 5 секунд.
Я пробовал следующее, чтобы ускорить загрузку более короткого варианта: безрезультатно:
1. изменить порядок переписывания
2. добавить / удалить? с конца для одного или обоих правил
3. добавить / удалить «последний» в конце одного или обоих правил
4. сделать 2 набора {}, но в результате nginx не смог перезагрузить
Я также пытался добавить 'break' в конец правил, но это заставило мой браузер загрузить страницу вместо ее отображения.
Есть идеи, как это ускорить?