我一般是 PHP 和 Web 开发的新手,但已经做了 5 年的程序员。我正在尝试使用记事本从头开始在我自己的网站上工作,以编辑我的 PHP 文件和我的服务器的 WAMP。我可以在 Safari、Chrome 和 Firefox 中查看我的文件,但不是 IE(我们都知道 IE 不是最好的),因为我正在使用一些 HTML5 的东西。无论如何,我有一个 Includes 文件夹,其中包含我的页眉、菜单和页脚文件。我有一个 index.php 文件,其中包含这些文件并可以很好地显示它们。在页面的中心是我想要的内容。为了保持干净的 url,我创建了很多文件夹并将同一个 index.php 文件放在那里(例如 Profile/index.php、Forums/index.php 等)。我这样做了,所以当我转到 localhost/mysite/profile/ 时,它向我展示了我想使用的模板。然而,必须有更好的方法来使用模板和更好的方法来获得干净的 url。我目前没有在任何地方托管这个网站,所以我不知道我是否可以访问 htaccess 文件(老实说,我什至不确定它是什么,只是看到它提到过),但我很好奇文件夹结构(每个菜单项一个文件夹)是正常还是可以的做法?我也很好奇是否有一种方法可以使用 index.php,而不必每次进行小改动时都复制和粘贴它。任何帮助,将不胜感激。谢谢。但我很好奇文件夹结构(每个菜单项一个文件夹)是正常还是好的做法?我也很好奇是否有一种方法可以使用 index.php,而不必每次进行小改动时都复制和粘贴它。任何帮助,将不胜感激。谢谢。但我很好奇文件夹结构(每个菜单项一个文件夹)是正常还是好的做法?我也很好奇是否有一种方法可以使用 index.php,而不必每次进行小改动时都复制和粘贴它。任何帮助,将不胜感激。谢谢。
3 回答
如果您计划进行模板化,我建议使用现有平台,例如Symfony、Zend Framework或Smarty。Smarty 可能是最容易使用的,而且它(几乎)纯粹是为了模板。而 Symfony 和 Zend Framework 是大包,有很多花里胡哨。
如果我要做纯模板,我会看 Smarty。我现在几乎所有当前的 PHP 项目都使用 Zend Framework,但它的学习曲线相当陡峭。你的前几周会令人沮丧。
就 URL 而言,.htaccess
可能是首选方法(至少在我的书中)。Zend Framework 和 Symfony 都有一种默认的 URL 编写风格,看起来就像http://host/controller/action
控制器是Profile或Forums。您不一定必须看到host/profile/index
,它可能是host/profile
或host/profile/edit
,其中 edit 是正在执行的操作。
复制 index.php 文件并不是我真正想要的方式。它看起来很乱,还有其他一些选择。如果您希望 url 干净且对搜索引擎友好,您应该真正了解一下使用 .htaccess 进行 url 重写
你是说你不确定你是否会有一个“访问 htaccess 文件”的服务器,但是如果你可以上传文件,你也可以随时上传 .htaccess 文件——问题是网络服务器是并不总是使用它们,或者可能没有启用 mod_rewrite。在这种情况下,您可以获取格式为http://www.example.com/index.php?u=/Profile/foo
(这也是我处理 url 重写的首选方式)的 url。
在您的 index.php 中,只需确保读取 mod_rewrite 传递的请求的 url 参数,并在文件夹中包含您需要的任何文件。实际上,您甚至不需要“物理”文件夹结构,您可能希望使用类或类似的东西来实现它。(我相信我会的)。
我真的建议你去看看一个好的 PHP 框架,例如CodeIgniter 。即使您决定从头开始编写所有代码,您仍然会学到很多关于 url 处理、数据库、MVC 模式、模板引擎、数据库抽象层和一般 PHP 编码的最佳实践。
您的答案是 htaccess 文件,将“文件夹结构”转换为 $_GET 值
例如,
如果您在 website.com/Profile/ 中,您可以编写一个 htaccess 行,将其转换为 website.com/index.php?folder=Profile
访问:
RewriteEngine on
RewriteRule ^/(.*)/$ index.php?folder=$1 [NC,L,QSA]
RewriteRule ^/(.*).html$ index.php?folder=$1 [NC,L,QSA]