【问题标题】:PHP include with varying URI structurePHP 包含不同的 URI 结构
【发布时间】:2012-07-13 19:26:20
【问题描述】:
我正在使用 .htaccess 文件重写所有 URI 地址以将用户带到 index.php,其中一些代码根据 URL 确定要包含的文件。
但是,如果 URL 位于标头的子文件夹中,则包含函数不会获取文件。
例如。
index.php 包含一个位于examplefolder/content/page.php 的文件。然后该文件在内容页面上包含一个标题,但 include('../header.php'); 不起作用。网址是example.com/news/latest。
我怎样才能让它工作?
【问题讨论】:
标签:
php
include
directory
【解决方案1】:
您可以使用chdir() 函数更改网络服务器上的当前工作目录,以使您的相对路径正常工作。
要查看当前工作目录是什么,只需echo getcwd(); 这样做后,您可能会意识到您不需要相对路径,您可以根据当前工作目录构建包含(如果您要重写 index.php,那么您的所有页面都将从相同的基本路径开始,即 web 根目录)。
【解决方案2】:
如果您将所有 URL 重写为 /index.php,则所有请求都将从 / 目录(即文档根目录)进行。
因此,如果您包含examplefolder/content/page.php 并从那里包含文件examplefolder/header.php,那么这正是您要编写的内容,因为包含文件不会更改当前执行线程中的工作目录。
例如
include('examplefolder/header.php');