我有一个.htaccess
文件,其中包含以下代码:
RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我在链接到另一个.php
页面时没有遇到任何问题,我只是放了href="/pages/home"
就行了。但由于一个奇怪的原因,我似乎无法以同样的方式使用php include()
。使用include '';
会有什么不同吗?
如果没有,那么我必须要找一些其他错误。这就是为什么我先询问是否存在与包括链接有什么不同的原因。
答案 0 :(得分:2)
.htaccess
是一个网络浏览器级配置,这意味着您将根据REQUEST_URI重写Web请求。 PHP的include()是文件系统级功能,因此您需要包含要包含的PHP的文件系统级路径。通常这将是一个相对路径。查看链接以获取更多示例。
答案 1 :(得分:1)
你的意思是说你要跟include '/pages/home'
绑在一起,因为那不是包括作品的方式。它使用文件路径,它与apache的url重写无关。
答案 2 :(得分:1)
原始海报评论说:
那么如果
home.php
在根目录中,我会在引号内放什么?include '/home.php';
,include 'home.php';
或include '/home'
;?
所以你在这里有一个基本路径问题。如果不了解更大的网站结构,很难知道如何处理。但这就是我建议你做的事情,让你的生活更轻松,现在和在将来。
首先,我建议使用include_once
代替include
,以避免脚本可能无意中尝试多次加载同一文件的情况。
include_once('home.php');
但我也鼓励你使用某种基本路径作为文件位置的前缀,这样你就不会经常处理相对位置。
例如,在主配置文件中,您可以像这样定义基本路径:
$BASE_PATH = '/the/path/to/the/codebase/';
然后当你执行include_once
时,语法为:
include_once($BASE_PATH . 'home.php');
这样做的好处是,无论您的代码库嵌套多深,您都将始终固定在$BASE_PATH
的值上。由于不必担心相对路径问题,您的生活将变得更轻松。
答案 3 :(得分:0)
重写网址后,您不需要更改文件的格式(如果包含)。如果您在项目的主目录中有a.php并在文件夹脚本中存档b.php,只需使用简单的方法将其包含在a.php中:
include 'scripts/b.php';