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;
仍然无法正常工作。但我发现规则中没有错误。
答案 0 :(得分:2)
您无法匹配重写规则中的参数,它们可能只包含路径。原因很简单:假设参数可能有另一个顺序;假设您没有考虑其他参数(例如来自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;
}