我正在学习HTML,对于href的工作原理感到困惑。

5
好的,现在我正在学习 HTML,很快就要学 CSS。在我的 HTML 代码中,我有一个用于导航的部分,如下所示:
<div id="header">
<h1>Guild Wars 2 Fanbase</h1>
<ol id="navigation">
    <li><a href="/">Home</a></li>
    <li><a href="/facts">Facts</a></li>
    <li><a href="/gallery">Gallery</a></li>
    <li><a href="/code">Coding</a>
        <ul><li><a href="/code/line">Lines</a></li>
            <li><a href="/code/comment">Comment Lines</a></li>
    </ul>
    </li>
</ol></div>

现在当我打开这个.html文件时,它的布局看起来都很好(就是标记)。我的问题是,当我在这个网站上点击链接时(这个网站就是这段代码),会出现“找不到此网页”的错误,但当然。但是我该如何创建它们,使得网页可以一起工作呢?我不确定如何正确表达。比如说,在同一个目录下创建另一个.html文件,这样当我点击链接时它就从第二个.html文件中读取内容吗?
如果您不确定我的问题,请告诉我,我会尽力更具体地解释。感谢您的帮助!
请原谅我的语法错误,我的英语并不太好,但我正在努力!
3个回答

7

正如@Craig T所提到的,你的href应该指向另一个页面。

<li><a href="/">Home</a></li>
<li><a href="/facts">Facts</a></li>

这些都是相对于您现有的网站而言,其中'/'是最顶层页面。 '/facts'实际上是指与'/'相对应的名为facts的目录。

然而,它们不一定只指向另一个html页面。 它们也可以指向另一个网站。

例如:

<li><a href="http://www.example.com">Links</a></li>

或者在其他网站上的特定页面:

<li><a href="http://www.example.com/somepath/something.html">Something</a></li>

在您提供的HTML代码中,URL指向目录。当未提供特定文件或资源时,即不以/page/yourpage.html结尾时,由Web服务器决定如何处理它。他们通常会制定规则来确定这一点。例如,Apache Web服务器通常配置为返回请求目录中的index.html文件。
因此,这些:
<li><a href="/">Home</a></li>
    <li><a href="/facts">Facts</a></li>
    <li><a href="/gallery">Gallery</a></li>
    <li><a href="/code">Coding</a>
        <ul><li><a href="/code/line">Lines</a></li>
            <li><a href="/code/comment">Comment Lines</a></li>

等同于这些:
<li><a href="/index.html">Home</a></li>
    <li><a href="/facts/index.html">Facts</a></li>
    <li><a href="/gallery/index.html">Gallery</a></li>
    <li><a href="/code/index.html">Coding</a>
        <ul><li><a href="/code/line/index.html">Lines</a></li>
                <li><a href="/code/comment/index.html">Comment Lines</a></li>

在某些设置中,缺省页面不是index.html而是index.php或index.asp。
实际上大多数情况下都有优先级。
例如,首先尝试查找index.php,如果没有则尝试查找index.html。
希望这清楚明白。

哇,非常感谢。这帮助我更好地理解了这个问题。我已经感觉自己更像一个专家了。感谢您花时间回答我的问题。再次感谢您。(: 另外,我想给你点赞,但我必须获得那该死的15个声望 :/ - Robolisk

4
在这个问题的背景下,你的 href 应该指向另一个 HTML 页面。例如:
<li><a href="/facts.html">Facts</a></li>

您需要在站点的根目录下创建一个名为facts.html的页面。

1
这就是我在寻找的答案!非常感谢你!(:!!!!!! 我会给你点赞,但我没有足够的声望。): - Robolisk
1
好的,这个方法有用,但也有问题。它并没有跳转到我的网站根目录,而是跳转到了我的硬盘根目录。这是否意味着我需要从我的硬盘根目录指向它? - Robolisk
1
是的,我想确认一下。只有当我输入完整的目标路径,例如“C:\SchoolHomework\website\facts.html”时,它才能正常工作。有没有办法让它不需要这样做就能正常工作? - Robolisk
@Robolisk - 去掉前导斜杠(例如<a href="facts.html">),它将相对于文档引用facts.html并在该目录中查找。前导斜杠表示从站点的根目录开始,因此它会尝试跳转到顶层。 - Mads Hansen
@Robolisk,如果您不是在Web服务器上托管此内容,则是正确的。 相对路径名有效。 即删除前导斜杠/。 例如,只需放置facts.html而不是/facts.html。 - hookenz
@Mads Hansen - 谢谢,这正是我想要的。感谢您的帮助(:@Matt H - 不,这是为一个小学校项目,虽然不小,但还好。我现在明白了,谢谢(: - Robolisk

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接