代码之家  ›  专栏  ›  技术社区  ›  TechChain

使用相对路径时链接未正确解析

  •  -3
  • TechChain  · 技术社区  · 7 年前

    我创建了一个 Header.php 根目录中的文件。

    下面是树结构。

    -SiteName
      -Header.php
      -Books
        -Samples
          -Math
            -MathBook.php
     -index.php
     -About.php
    

    所以数学书。php包含标题。php如下所示

    include '../../../Header.php';
    

    标题。php包含在About中。像这样的php

    include 'Header.php';
    

    现在是页眉。php包含导航菜单的代码。

    <ul>
          <li><a href="index.php" class="<?php active('index.php');?>">Home</a></li>
          <li><a href="About.php" class="<?php active('AboutUs.php');?>">About Us</a></li>
    </ul>
    

    所以现在我学数学的时候。php和我按下home键,我可以:

    /Books/Samples/Math/index.php
    

    显然URL不存在。

    如何确保用户在数学方面。php应该转到 index.php 不包括当前路径。

    标题。php包含在所有文件中。

    2 回复  |  直到 7 年前
        1
  •  1
  •   raidenace    7 年前

    您可以定义相对于站点基本url的包含和链接。

    HREF可以这样编写:

    <ul>
    <li>
      <a 
          href="<?php echo $_SERVER['HTTP_HOST'].'/index.php';?>" 
          class="<?php active('index.php');?>">Home</a>
    </li>
    <li>
      <a 
         href="<?php echo $_SERVER['HTTP_HOST'].'/About.php';?>" 
         class="<?php active('AboutUs.php');?>">About Us</a>
    </li>
    </ul>
    
        2
  •  0
  •   Spoody    7 年前

    您正在使用 相对路径

    通过在href属性中键入“index.php”,可以指向当前文件夹中名为“index.php”的文件。

    如果要指向根文件夹中的文件,需要使用斜杠 /

    href="/<sub folder if any>/index.php"
    href="/<sub folder if any>/About.php"
    

    这将使用户访问您想要的文件,如果您不确定要使用什么,只需使用以下绝对路径:

    href="https://www.example.com/<sub folder if any>/index.php"
    href="https://www.example.com/<sub folder if any>/About.php"
    

    编辑

    添加斜杠有效,因为通过添加 / 您告诉浏览器转到根文件夹/网站,并从那里开始创建路径。

    假设你在 yourwebsite.com/current/path/file.html

    链接到 /some/path/to/a-file.php 决定 yourwebsite.com/some/path/to/a-file.php

    但链接到 some/path/to/a-file.php 决定 yourwebsite.com/current/path/some/path/to/a-file.php