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 ^/index_([0-9]+)(.*)$ /forum-$1-1.html last; rewrite ^/dispbbs\.asp\?boardID=([0-9]+)&ID=([0-9]+)$ /thread-$2-1-1.html last; 

我已经尝试了上面的重写规则,并得到一个死的结果,不工作。 我提到很多post和文章,没有帮助。

有什么错误吗?

V / R,加文


感谢您的回复。 🙂

我已经改变了我的nginxconfiguration,

 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; 

还是行不通。 但是我发现规则没有错。

您不能在重写规则中匹配参数,它们可能只包含路径。 原因很简单:假设参数可能有另一个命令; 假设可以有其他的参数没有考虑到(例如来自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; }