PHP路由和文件访问

时间:2014-08-08 17:21:08

标签: php .htaccess url-routing

我坚持:

  1. 我是否应该在 .htaccess 中使用PHP路由来编写如下内容:

    RewriteEngine on
    RewriteRule ^(.*)$ /index.php
    

    之后解析url就像任何MVC框架一样?

    注意:我喜欢这个想法,但我相信自己写的太多了,那么,我应该相信像kleinslim这样的小框架吗?

  2. 我应该在 .htaccess 中为某些公用文件夹编写规则,只是阻止访问私人文件夹吗?

    注意:关于这一点,我认为当我们真正讨论文件访问控制时,它会更强大,更灵活。

  3. 另外我想提一下,我没有使用MVC模式,而且我根据自己的不足知识陈述了所有内容,所以我希望你证明我错了或说出我错在哪里

1 个答案:

答案 0 :(得分:0)

嗯,就我而言,我不希望我的应用过分依赖.htaccess规则。我使用了一个简单的规则集,就像你在选项1中得到的一样,然后我让大部分路由都由框架处理。我每天都会使用Klein并喜欢它。它强大而可靠,但代码库相对较小,所以如果我真的需要,我可以深入了解发生了什么。我知道有些人使用和推荐Slim,尽管我自己并没有使用它。在PHP中编写自己的路由代码非常简单,但是你会遇到许多边缘情况。

如果你非常依赖.htaccess,你可能会遇到一些问题。首先.htaccess是递归解析的,因此Apache必须检查树中每个子目录的.htaccess文件。链中的一些.htaccess规则实际上可以覆盖你的逻辑,并产生意想不到的副作用。我不认为Nginx或其他一些网络服务器甚至支持.htaccess,所以你将自己锁定在Apache中。一些托管服务提供商完全或部分阻止使用.htaccess。就个人而言,我认为路由逻辑将更容易理解,因此未来的开发人员可以维护它,如果它是用应用程序的语言编写的,而不是.htaccess规则。

最后,我会提醒我不要放弃MVC模式。如果您的域逻辑(模型)渗透到应用程序的其余部分,那么您或继承您的代码的可怜的傻瓜将会受到伤害。如果它是一个足够小的应用程序,结合Controller和View可能不会是灾难性的,但大多数应用程序都会增长。即使您不遵循严格的MVC,也要遵循一些内部一致的模式,并将您的疑虑分开。无论如何,我的投票将是针对具有最小.htaccess规则的微框架,以便于维护,易于开发,可移植性,甚至可能性能(.htaccess如果过度使用会导致性能问题,因为我提到的递归问题)。