使用/index.php作为网站的简单模板和文档路由器?

时间:2016-08-02 14:40:25

标签: php templates

我需要将一个简单/小型网站快速整合到内部使用(无外部访问),其中包含一些表单和简单的交互式页面。

我并不真正想要CMS的维护费用,但是为了使每个页面具有一致的外观和感觉等,能够让每个页面都基于一个通用模板,这将是有用的。环绕唯一页面内容,包括HTML头部,标题,网站导航,页脚等。

一种方法是在每个页面中通过PHP包含各种片段,但这涉及每个页面中的重复,如果我决定以后可能需要进行大量更改,则不能很好地扩展。

替代方法是使用主DocumentRoot index.php文件作为模板,而是将其包含在'内。本身(这样每个其他页面实际上只是一个部分文件,用于定义'标题'和#39;(主页面内容)的变量。)

我看到我可以使用$_SERVER['PATH_INFO']提取所需的文件路径(相对于DocumentRoot)和$_SERVER['REQUEST_URI']来获取整个请求字符串(如果可能有任何GET参数);对于索引页面本身的实际内容,我可以让它包含一个替代命名的文件;在Apache重写规则中必须有一些方法可以从最终的URI中删除index.php,但是我还没有想到比这更远。

我确信这必须是以前遇到很多次的情景。我可以花几天时间试图通过思考并重新发明自己的轮子,但我没有时间去做这件事,而且可能不会很好地利用它无论如何。

是否有人有现成的" quickie"代码将足够好"为此,或了解某些事情"正式"已发布(此时快速入侵是否成为实际的软件包?!)?

感谢您的任何建议。

3 个答案:

答案 0 :(得分:0)

您可以将您请求的页面作为url参数发送到index.php,例如'index.php?page = requested_pa​​ge',并在index.php中包含以下规则,在您希望获取内容的位置

<?php
include("./pages/".$_GET['page'].".php");
?>

答案 1 :(得分:0)

我不确定您为此付出的努力是否会少于实施简单CMS的努力。大多数系统都具有简单的设置,并为您完成大部分工作。任何时候,如果不节省实施CMS的费用,您将在以后进行维护。不要以“内部使用”为借口制作不良软件。除非它是一次性解决方案,在几周内将被忽视,否则您(或其他开发人员)将不得不扩展和维护该软件。

答案 2 :(得分:0)

将所有请求重定向到索引:

RewriteEngine on
RewriteBase /
RewriteRule ^(?!index\.php$|(?:css|js|media)(?:/|$)). index.php [L]

这样的东西会停止索引上的重定向循环,并将除了请求之外的所有内容发送到索引中的处理程序中的静态内容文件夹(更改为适合)。通过$_SERVER['REQUEST_URI']访问网址。