Concrete5如何安排它的绝对路径?

时间:2010-11-18 22:48:09

标签: content-management absolute-path concrete5

我被要求弄清楚Concrete5系统如何为雇主工作,我无法解决问题。

我将Concrete5安装到名为/realprofessionals的服务器上的目录中。当Concrete5系统创建新页面时,它会为它们提供自己的绝对路径,例如:

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

但是,它实际上并没有在名为/realprofessionals的{​​{1}}目录中创建一个文件夹。那怎么办? http://www.wmcpartners.com/realprofessionals/footer如何成为一个有效的链接?

2 个答案:

答案 0 :(得分:2)

简答:所有页面请求实际上都是通过唯一的index.php文件。页面内容存储在数据库中,而不是存储在服务器上的文件中。

答案很长: Concrete5(以及大多数基于PHP的CMS)的工作方式如下:所有请求都通过index.php文件进行路由。使用.htaccess文件中的某些mod_rewrite规则强制执行此路由。规则说“对于任何请求,实际上不要转到该页面,而是转到index.php并将所请求的路径的其余部分作为$ _GET参数传递”。然后在index.php代码(或index.php文件包含的一些其他代码)中,根据Apache中放入$ _GET参数的路径确定所请求的页面(根据mod中的mod_rewrite规则)。 htaccess),并从数据库中检索适当的内容。

在数据库中存储内容而不是服务器上的文件有几个优点。例如,您可以在每个页面上重复使用相同的html模板 - 页眉,页脚,侧边栏 - 如果您更改模板,它将自动反映在其使用的所有页面上。此外,它可以更容易地随机播放页面并为其提供您想要的任何URL(例如,最后没有“.php”扩展名,或/ 2010/11 / date / based / paths / for / blog / posts)。 / p>

缺点当然是每个请求都需要许多数据库查询,但对于大多数站点(那些没有数以万计的页面浏览量的站点),权衡是非常值得的(并且各种类型的缓存可以帮助降低性能损失)

答案 1 :(得分:1)

Jordan的答案非常好,我想补充一点,你可能在网址中看不到index.php,因为你已经启用 漂亮的网址 < / strong>(键入&#39;漂亮&#39;在concrete5&#39的搜索框中进行检查)。

无论如何,以编程方式添加内部页面链接的最佳方法是:

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

无论是否有漂亮的URL,它都适用于localhost和online。

(对于页面名称,请转到仪表板/完整站点地图/页面名称/属性/页面路径和位置。)