Правило перезаписи nginx не работает? - PullRequest
4 голосов
/ 29 марта 2010
rewrite ^/index\.asp /index.php last;
rewrite ^/index\.asp\?boardid=([0-9]+)$ /forum-$1-1.html last;
rewrite ^/index\.asp\?boardid=([0-9]+)(.*)$ /forum-$1-1.html last;
rewrite ^/index_([0-9]+)(.*)$ /forum-$1-1.html last;
rewrite ^/dispbbs\.asp\?boardID=([0-9]+)&ID=([0-9]+)$ /thread-$2-1-1.html last;

Я попробовал переписать правила выше и получить мертвый результат, не работающий. Я имею в виду многие посты и статьи, и никакой помощи.

Есть ли ошибки?

V / R, Гэвин


Спасибо за ваш ответ. :)

Я изменил свою конфигурацию nginx на

rewrite ^/index\.asp$ /index.php last;
rewrite ^/index\.asp\?boardid=([0-9]+)(.*)$ /forum-$1-1.html last;
rewrite ^/index\.asp\?boardid=([0-9]+)$ /forum-$1-1.html last;
rewrite ^/dispbbs\.asp\?boardID=([0-9]+)&ID=([0-9]+)$ /thread-$2-1-1.html last;

Все еще не работает. Но я не нахожу ошибок в правилах.

1 Ответ

2 голосов
/ 29 марта 2010

Нельзя сопоставлять аргументы в правилах 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;
}
...