Нельзя сопоставлять аргументы в правилах rewrite , они могут содержать только пути. Причины просты: предположим, что аргументы могут иметь другой порядок; предположим, что могут быть дополнительные аргументы, которые вы не приняли во внимание (например, ключевые слова из Google).
Таким образом, ваши правила должны быть переписаны таким образом, чтобы сначала соответствовать пути, а затем проверять аргументы. Как это:
rewrite ^/index_([0-9]+)(.*)$ /forum-$1-1.html last;
location /index.asp {
if ($arg_boardid ~ "^([0-9]+)") {
rewrite ^ /forum-$1-1.html break;
}
rewrite ^ /index.php break;
}
location /dispbbs.asp {
rewrite ^ /thread-$arg_ID-1-1.html break;
}