我一直在问弄清楚如何Concrete5系统的工作方式为雇主,而我不出来的东西。

我已经安装在服务器称为/realprofessionals目录Concrete5。当Concrete5系统,使新的页面,它给了他们自己的绝对路径,例如:

http://www.wmcpartners.com/realprofessionals/footer

然而,实际上并没有在称为/realprofessionalsfooter目录取得的文件夹。那么如何运作的? http://www.wmcpartners.com/realprofessionals/footer 如何工作链路<? / p>

有帮助吗?

解决方案

简短的回答:所有页面请求,实际上经历了一个只有index.php文件。页的内容存储在数据库中,而不是在服务器上的文件。

<强>长答案: Concrete5(和大多数基于PHP CMS对此事)这样的工作:所有的请求都通过index.php文件传送。该路由执行与.htaccess文件中的mod_rewrite的一些规则。规则说“提出任何要求,实际上没有去那个页面,而是去的index.php,并通过所要求的路径的其余部分为$ _GET参数”。然后在index.php代码(或由index.php文件中包含一些其他的代码),所请求的页面基础确定,是由Apache的投入$ _GET参数(按中的mod_rewrite规则的道路上。 htaccess的),且将适当的内容从数据库中检索。

在数据库中存储的内容,而不是文件的服务器上具有若干优点。例如,你可以重新使用相同的HTML模板 - 每一页上,如果你改变它会自动在它上使用的所有页面反映模板 - 页眉,页脚,侧边栏。此外,它可以更容易地洗牌周围的网页和给他们任何你想要的网址(例如,没有“.php”结尾的结尾,或/ 2010/11 /日期/基/路径/为/博客/日志)。

当然,它的缺点是每个请求都需要很多数据库查询,但对于大多数网站(那些没有网页浏览不计其数),权衡是值得的(和各类缓存可以帮助减少性能损失)

其他提示

乔丹的回答是优秀的,我想补充一点,你可能没有看到的index.php在URL,因为你已经启用的 漂亮网址(适用型“漂亮”上concrete5的搜索框来检查)。

总之,以编程方式添加链接到内部网页最好的方法是:

<a href="<?=$this->url('page-name');?>"> 
    page name 
</a>

它的工作原理都在本地主机上,并在网上,有或没有漂亮的URL。

(对于页面名称转到仪表板/全网站导航/页面名称/属性/页路径和位置。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top