将index.php
用作其他脚本的加载器是不是很糟糕,还是有所不同?
即。请求index.php
使用不同的查询字符串并在其中,选择并包含匹配的脚本。
e.g。
www.example.com/?sign-in
www.example.com/sign-in.php
的{{1}}内容
www.example.com/?new-post
的www.example.com/new-post.php
内容
通过这种方式,您可以使用index.php
来执行常见的包含和处理,例如设置时区,mb编码,数据库连接,身份验证等。
答案 0 :(得分:2)
最佳做法是让apache将所有网址重写为index.php
或其他可用作引导程序的文件。此引导程序运行所有基本代码,然后此引导程序可以根据URL确定要采取的其他操作。
每个框架都是这样的。
你可能想要在bootstrap中做些几件事:
设置,自动加载类
设置mysql连接
检查用户是否针对特定操作进行了身份验证
有很多关于使用apache重写网址的教程:http://www.workingwith.me.uk/articles/scripting/mod_rewrite
如果您真的想了解最佳实践,我建议您查看现有框架,了解它们如何实现某些内容。例如:Zend或Symfony
答案 1 :(得分:2)
是和否
问题在于,通过这样做,您将失去任何SEO值,例如:domain.com/index.php?post=story对domain.com/post/story排名很差。你的index.php也会很快变得混乱。
据说MVC通常使用index.php,所以我的网址是domain.com/users/edit/123,这是一个非常合乎逻辑的网址,但实际上被称为domain.com/index.php,它然后查看第一个参数,“用户”并实例化用户控制器,然后在其中查找函数编辑并传递“123”(用户ID)作为函数中的第一个参数。如果您不熟悉MVC,我会建议将codeigniter作为起始者more on codeigniter。
最后,您将通过从头开始构建它来重新发明轮子,而不是使用MVC使开发更容易。
答案 2 :(得分:1)
这是最好的方法。您可以控制您的网站。
创建index.php
并根据需要包含其他文件。
(定义一个常量并在包含的文件中使用它等等)
但请记住尽量减少index.php
您也可以使用Apache mod_rewrite
生成SEO友好URL。
答案 3 :(得分:1)
您可以将路由拆分为映射到其他文件,而不是将所有请求(通过htaccess)路由到index.php:
/blog/hello-there
映射到blog.php?title=hello-there
/sign/in
映射到login.php?login
等,因此您可以根据请求URL创建自己的简单路由;易于阅读和易于维护。
此解决方案适用于小型项目,对于更大的项目,我建议使用完整的框架,如Yii或Symfony。