Есть три варианта решения этой проблемы, два из них одинаково плохи, а третий универсален.
location / {
rewrite ^(\d+)/(\d+)$ /index.php?a=$1&b=$2 last;
....
try_files $uri $uri/ /index.php?a=$uri;
}
Это плохо тем, что для КАЖДОГО запроса будет проверяться, не соответствует ли строка одному из заявленных регекспов. Для каждого запроса, включая стили, скрипты и статику. Насчёт last в рейврайте не уверен.
location ~* /(\d+)/(\d+) {
rewrite ^(\d+)/(\d+)$ /index.php?a=$1&b=$2 last;
}
location / {
try_files $uri $uri/ /index.php?a=$uri;
}
Этот способ плох тем, что придётся повторять регексп в локейшне. Насчёт last в реврайте опять же не уверен.
location / {
try_files $uri $uri/ /index.php?a=$uri;
}
Самый уверсальный способ. Единая точка входа, роутингом рулит PHP. Идеально.