框架本身有默认路由,服务器本身也有url重写,那为什么通常美化url都用框架的路由功能而不是后者?
rt,比如说thinkphp本身有默认路由,我们为了美化url,为什么不用服务器本身的url重写,而是用框架本身的路由来实现,是后者效率更高吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
rt,比如说thinkphp本身有默认路由,我们为了美化url,为什么不用服务器本身的url重写,而是用框架本身的路由来实现,是后者效率更高吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
因为实际情况下写网站的人并不知道自己的网站是发布在哪里用哪个应用服务器的,
并且自己调试的时候是不会用到服务器的,
还有一个因素是服务器往往会同时运行多个网站,不能因为一个项目的URL配置就得经常重启。
PHP最大的优点就是热部署 -- 服务器(apache/nginx)不需要重启
如果把url重写功能放到服务器软件里面,岂不是挥刀自宫,不如去用Java得了。
如果迁移服务器
如果考虑到架构扩展
而且个人觉得有些东西的产生有自己的目的和作用
不过这个想法不错
以上:好像都是废话..并没有给出实际的数据..
可控性更强, 往往服务器的环境是不可控的, 你不知道你的程序要什么环境下运行. 通过程序来实现URL重写, 可控性明显更强.
灵活性更强, 比如说我的运行环境不支持pathinfo方式, 我从pathinfo转到query string方式, 往往只需要修改一个配置就可以轻轻松松地实现。我从
.html
后缀换成.aspx
后缀, 往往也只需要一个简单的配置就行了.因为框架本身开发的时候,他是要竟可能排除外界所有干扰的。所以呢 框架就这么定义了,然后用的人呢一般都是懒的改或者不知道怎么改或者反正改不改都可以用,就形成了这一现象。然并卵,都可以
框架普遍使用index.php作为前端控制器,所以一般都是配置服务器不是文件($uri)和目录($uri/)的请求都交给PHP来处理,比如Nginx:
比如请求是
/post/1024?page=2&tag=lamp
Nginx会把这个东西交给/index.php处理.
index.php通过
$_SERVER['QUERY_STRING']
拿到page=2&tag=lamp
通过
parse_url($_SERVER['REQUEST_URI'])['path']
拿到/post/1024
拿到这些东西后框架会用正则表达式等来拿到具体参数,调用相应控制器来处理请求.
如果你使用的是页面控制器,则需要利用服务器的重写功能来美化URL,比如Discuz!