1
ryd994 2015-04-19 00:02:43 +08:00 via Android
自从有了location regex捕捉,map,和return之后,已经很少用rewrite了……
|
2
hitsmaxft OP @ryd994 location的正则匹配只是扩大了匹配的方位,思路是不变的。可以说location的内容主要看后端服务的需要。
rewrite 指令更像是一种前置的整理过程,针对url进行内部重定向。 加上map就涉及到变量了,所以这篇文章不涉及 |
3
ryd994 2015-04-19 10:29:51 +08:00
@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的就知道 |