你如何在PHP中组织你的页面?

时间:2011-05-09 17:00:29

标签: php html web

通常我有主页面(index.php),包括页眉/页脚/菜单和页面内容。更改内容从GET / POST方法检查一些变量:对于每个条件,我加载请求的页面。

某些事情如:

website/
website/index.php?explore=forum
website/index.php?explore=users
website/index.php?explore=articles

依旧......

现在,我的网站正在增长,我认为最好的方法是直接调用每个部分的“索引”页面;所以例如上面,这将被翻译为:

website/
website/forum/
website/users/
website/articles/

看起来更好,更易于管理!问题是,如果我这样做,我需要为每个区域(包括页眉/页脚/菜单)实现轮廓。

所以我不知道是否有更好的策略,如果方便的话。欢迎任何建议/意见!感谢

4 个答案:

答案 0 :(得分:2)

通过执行apache重写,您可以获得最高策略的最终结果。例如,/ forum可以重写为www.yoursite.com/index.php?article=forum等。

以下是完整指南:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

答案 1 :(得分:2)

查看一个MVC框架,如Symfony(PHP),Rails(Ruby)或Django(Python)。

在MVC设计模式中,您通常有一个前端控制器来处理所有负载。您有与您的数据源交互的模型,并且您具有定义用户界面的视图。控制器通过模型加载数据,然后将这些数据传递给视图。

在您的示例中,每个部分都有不同的控制器,不同的交互类型(最常见的是创建,列表,删除,编辑)具有不同的操作。

答案 2 :(得分:2)

您可以使用.htaccess重写规则将这些漂亮的网址重定向到单个index.php文件。

唯一的问题是,您必须想出一种区分网址的方法,以便将网址与正常网址(website/forum/website/users/等)进行重定向(website/css/website/images/等。)。

有一些选择:

  1. 您可以使用website/[pagename]/,而不是website/page/[pagename]/。然后,您的正则表达式可以将每个匹配^/?page/[\w+]/?$的网址重定向到index.php?explore=[pagename]
  2. 只需明确列出要重定向的每个页面;使用像^/?[forum|users|articles]/?$
  3. 这样的正则表达式
  4. 别担心。如果您只是重定向不包含文件名的网址,那么当您时尝试引用CSS或图片(即包含文件名的网址) ,这应该不是问题。

答案 3 :(得分:1)

在我们的PHP项目中(没有像Symfony这样的框架),我们肯定会为每个部分提供不同的目录和单独的索引文件,就像你说的那样。

但我们通常只有一个标题包含文件和一个页脚文件,它适用于网站上的每个页面。这使页眉和页脚保持一致,更易于管理。

您始终可以使用类似

的行来包含页眉和页脚
<?php include('../includes/head.php'); ?>

如果要将这些文件保存在自己的目录中。我认为我们实际上已经/包含在我们的包含路径中所以我们的行只是说

<?php include('head.php'); ?>