@
hitsmaxft 我说location是指可以在location里面直接捕捉变量,然后return 301就好,参考我在这里的回复:
/t/184228 如果用一堆rewrite就不好吧。
用好map,return,和alias,能覆盖绝大多数rewrite的使用,而且更有效率,而且会更符合Nginx的设计:nginx configuration in general is declarative
另外,你文中使用了很多if——if is evil
比如:
location = error.html {
if ( $arg_test ~= "" ) {
rewrite /error.html /error-test.html break;
root /service/http/asset;
}
}
不应在if中使用非rewrite指令,否则会造成不确定的结果,在if里改root则更加……
那个rewrite用alias会更好,因为不必再搜索location
PS:IMHO,rewrite模块整个模块其实都有点反Nginx哲学。用的好的话很顺手,但backfire也不少,尽量少用
PPS:其实很多人用rewrite只是因为简单的rewrite只要一行。或者是apache带来的习惯,看看Nginx板块上有多少求翻译apache rewrite的就知道