@
peizhao2017 技术限制。
地址重写通常是从简单地址转写到复杂的 args 地址,所以这步可以交由 Web Server 来负责。
反过来 args 地址转写到简单地址通常在程序生成链接的时候就能做,先生成 args 地址再转写,相当于多此一举。
至于 rewrite 为什么交给 Web Server 来做,那也是历史遗留问题,以前 PHP 的框架没有路由系统,路由大多是自己实现或者根本就不用,伪静态在世界上还没有搜索引擎的时候也并不重要。后期有了伪静态需求的时候,再追加一个路由系统进去就比较复杂,不如让 Web Server 来解决,程序里也只需要修改视图模板就行了。
如果你看过一些非 PHP 的程序,比如 Python Rails 写的,又或者是比较现代化的 PHP 程序,就会知道,Web Server 根本不需要插手 rewrite,因为程序框架的路由器就能解析地址。nginx 里直接写 try_files $uri index.php; 就能跑了。