$ _SERVER ['DOCUMENT_ROOT']路径在HTML href中不起作用

时间:2019-01-29 15:45:18

标签: php

我尝试了几种方法来回显href属性中的绝对路径,但是没有用。这是我在说什么的简要介绍。

我将head标签切成一个head.php文件。我必须使用相同的头文件中的其他页面。由于文档的根目录级别,我在使用相对路径时并没有收到短图标。因此,我决定以面向对象的方式使用绝对路径。

class Config {

    public static $url = null;
    public static $ext = null;

    public function __construct()
    {
        self::$url = $_SERVER['DOCUMENT_ROOT'];
        self::$ext = '/bcc-wd-batch1/imran17507/php/ecommerce/';
    }
}

然后在head.php中输入

<?php 
    include_once($_SERVER['DOCUMENT_ROOT'] . '/bcc-wd-batch1/imran17507/php/ecommerce/vendor/autoload.php');
    use Site\Utility\Config;

    $config = new Config();

    $url = "file:///".Config::$url.Config::$ext;

    //Tried $url = Config::$url.Config::$ext; too
    //echo $url;

    ?>

<--This is where I wan't to make the changes.-->

    <link rel="apple-touch-icon" sizes="180x180" href="../../../medias/favicon/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="../../../medias/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="../../../medias/favicon/favicon-16x16.png">
    <link rel="manifest" href="../../../medias/favicon/site.webmanifest">
    <link rel="mask-icon" href="../../../medias/favicon/safari-pinned-tab.svg" color="#5bbad5">

以及我在链接标记中尝试过的变体形式:

1。

<?php
echo '<link rel="apple-touch-icon" sizes="180x180" href="'.$url.'medias/favicon/apple-touch-icon.png">';
echo '<link rel="icon" type="image/png" sizes="32x32" href="'.$url.'medias/favicon/favicon-32x32.png">';
echo '<link rel="icon" type="image/png" sizes="16x16" href="'.$url.'medias/favicon/favicon-16x16.png">';
echo '<link rel="manifest" href="'.$url.'medias/favicon/site.webmanifest">';
echo '<link rel="mask-icon" href="'.$url.'medias/favicon/safari-pinned-tab.svg" color="#5bbad5">';
echo '<meta name="msapplication-TileColor" content="#da532c">';
echo '<meta name="theme-color" content="#ffffff">';
?>

2。

<link rel="apple-touch-icon" sizes="180x180" href="<?=$url;?>medias/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="<?=$url;?>medias/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="<?=$url;?>medias/favicon/favicon-16x16.png">
<link rel="manifest" href="<?=$url;?>medias/favicon/site.webmanifest">
<link rel="mask-icon" href="<?=$url;?>medias/favicon/safari-pinned-tab.svg" color="#5bbad5">

现在我正式不合时宜。

2 个答案:

答案 0 :(得分:1)

因此,我想在href属性中使用绝对路径。我不知道的是,PHP中的绝对路径和html中的绝对路径是不同的。

PHP中的绝对路径

$_SERVER['DOCUMENT_ROOT'];

但是HTML中的绝对路径是:

href="/pages/index.php"

从字面上看,正斜杠(/)是我的问题的答案以及尝试变体和寻找答案的时间

同样,html中的绝对路径只是一个正斜杠

答案 1 :(得分:0)

我不知道这是否有助于解决您的问题,但是您可以在头内设置base标签,这意味着所有相关内容都将从此处引用:

<head>
    <title></title>
    <base href="https://www.example.com/">
    <link.....>
    <script.....>
</head>