URL重写/路由(mod_rewrite)是否真的是框架所必需的?

时间:2012-07-18 19:21:54

标签: php frameworks url-routing conceptual

我多年来一直在编写PHP代码。现在我有很多可重复使用的模块 - 至少对我来说。典型的老式开发者:D。但现在几乎每个人都在某种程度上使用烘焙即时框架,而我的模块不再可重复使用。大多数当前着名的框架,如CI,Zend,Cake等,以及应该更简单的微框架,如Fat-free,Silex,MicroMVC等,使用称为URL路由/ URL的方法重写等。

但是......你觉得这个花哨的 URL路由真的是必要的吗?

让我们考虑一下:

  • 处理这种复杂的花哨方法需要多少工作?正则表达式解析使用相对较重的计算不是吗?它是不是很干嘛?
  • 我们多久写一次URL地址/手动输入?而不是单击书签和/或超链接?
  • 它真的对搜索引擎友好吗?我的意思是搜索引擎索引URL params不行吗?
  • 为什么Google,Facebook等大型网站仍使用“路径?var1 = val1& var2 = val2& ...”?
  • 不同网络服务器上的不同设置如何?阿帕奇/ IIS / Nginx的/ Ligthy?比如将.htaccess移植到web.config和另一个??它不是比更多解决方案更多的问题吗? (用于调试等)
你怎么看?我们应该继续使用花哨的网址吗?或者我们最好用[更简单的]请求参数回到[web]性质?任何回应都表示赞赏。

3 个答案:

答案 0 :(得分:7)

  • 通过使用APC缓解的正则表达式运行URL的计算成本
  • 它不是关于手动URL输入
  • 是的,它对SEO的背景有影响
  • 因为他们必须保存每次翻牌,你的网站每天都没有数十亿的请求
  • 这实际上是为什么使用front controllers代替.htaccess来解析网址
  • 的原因

这应该照顾你的“要点”。

是的,我们应该继续使用“漂亮的网址”,因为很多人在点击链接之前会先浏览完整的网址。当他们看到完整且易于理解的URL时,人们会更安全。

此外,相当多的专业PHP开发人员试图避免使用流行的框架。主要是因为在代码质量方面,所述框架的质量确实非常差(甚至Symfony2,它被认为是最好的,也有问题)。

仅仅因为您使用框架,它不会使您的应用程序更好。相反,你应该关注适当的OOP,遵循SOLID原则并遵守Demeter法则。 MVC只是另一种设计模式,它实际上解决了域业务逻辑表示的分离。

如果您想了解MVC,请通过 Martin Fowler 阅读GUI Architectures

答案 1 :(得分:3)

最终,它归结为设计架构,特别是这些MVC

  

处理这种复杂的花哨方法需要多少工作?正则表达式解析使用相对较重的计算不是吗?它是不是很干嘛?

虽然启动重写引擎需要一些成本,但这些框架中的大部分都不会在路由中使用正则表达式。它只是盲目地将没有映射到现有资源的每个请求路由到控制器(例如index.php)并让它弄明白。话虽这么说,运行php可能会比重写引擎产生更大的影响。

  

多久写一次URL地址/手动输入?而不是点击书签和/或超链接?

不确定这是什么意思。键入(或记住)http://domain.com/post/intro-to-apache比键入http://domain.com/post.php?post_id=141更容易吗?

  

它真的对搜索引擎友好吗?我的意思是搜索引擎索引URL参数没有问题吗?

是的,确实如此,它会产生很大的影响。不仅如此,人们更容易看到链接是什么。

  

为什么Google,Facebook等大型网站仍在使用"路径?var1 = val1& var2 = val2& ..."?

在URI中使用post_id与查询字符串q之类的内容之间存在差异。前者是动态访问现有内容,后者是动态表单输入,可以是用户输入的任何内容

编辑:只是一个注释,Facebook 进行URL重写,维基百科也是如此。它使人类可读的URL以及更好的SEO。

  

不同网络服务器上的不同设置如何?阿帕奇/ IIS / Nginx的/ Ligthy?比如将.htaccess移植到web.config和另一个??与更多解决方案相比,它不会产生更多问题吗? (用于调试等)

路由规则非常简单。框架为广泛使用的Web服务器提供了它。如果你想做一些自定义的事情,显然你必须解决这些路由规则,但你必须至少能够熟练掌握网络服务器的重写引擎。

答案 2 :(得分:0)

如果没有别的,拥有漂亮的URL是搜索引擎使用(可能部分仍然)重要的东西。如果您将链接发送给其他人,也会更好。