我正在使用Navbar,这就是我的目录结构的方式:
-- localhost
|- navbar.php
|- file1.php
|- file2.php
|-- AttendanceFolder
|- file3.php
在Navbar中,我分配了这样的URL:
<a href="<?php $_SERVER['DOCUMENT_ROOT'] ?>/file1.php">File1</a>
<?php
if(condition)
{
echo "<a href='" . $_SERVER['DOCUMENT_ROOT'] . "/file2.php'>File2</a>";
}
?>
<a href="<?php $_SERVER['DOCUMENT_ROOT'] ?>/AttendanceFolder/file3.php">File3</a>
我的问题是,对于 file1 和 file3 ,它在所有页面中正确显示URL,例如localhost/file1.php
和localhost/AttendanceFolder/file3.php
,但对于 file2.php ,它为我提供了Windows Explorer的绝对目录路径,并将其读取为这样的文件:
file:///C:/xampp/htdocs/file2.php
自然,我无法访问此页面,因为它没有由服务器处理。有什么方法可以解决此问题?我尝试查找它,但找不到解决方案的类似问题。
如果您不使用echo
命令,则没有写入输出中。因此,对于file1.php
和file2.php
,它忽略了$_SERVER['DOCUMENT_ROOT']
。您的代码等同于:
<a href="/file1.php">File1</a>
<?php
if(condition)
{
echo "<a href='" . $_SERVER['DOCUMENT_ROOT'] . "/file2.php'>File2</a>";
}
?>
<a href="/AttendanceFolder/file3.php">File3</a>
$_SERVER['DOCUMENT_ROOT']
的值是C:/xampp/htdocs
,因此将其放入file2.php
URL。
在URL中使用DOCUMENT_ROOT
实际上永远是不合适的。它是服务器本地的绝对路径名,但是客户端使用的URL需要是相对于文档root而不是包括该的路径名。该变量仅在从php php
所以将file2.php
更改为:
<?php
if(condition)
{
echo "<a href='/file2.php'>File2</a>";
}
?>