【问题标题】:HTML Navigation Error. How to handle www.website.com versus website.com? Correct navigation in html?HTML 导航错误。如何处理 www.website.com 与 website.com? html中的正确导航?
【发布时间】:2012-11-05 20:51:42
【问题描述】:

我有以下html代码:

<div id="page">
    <a class="topNavigationLink" href="http://MyOwnWebsite.com/">Home</a>
    <a class="topNavigationLink" href="page1.html">page1</a>
    <a class="topNavigationLink" href="page2.html">page2</a>
</div>

当我浏览到 www.MyOwnWebsite.com 然后单击导航链接时,一切正常。

但是,如果我浏览到 MYOWnWebsite.com(没有 www),然后尝试导航到其中一个页面,我会收到一个错误:

Firefox can't find the file at http://MyOWnWebsite.com/page1.html.

我做错了吗?处理 www.website.com 与 website.com 的正确方法是什么?

【问题讨论】:

  • 这取决于您的服务器。您是否在服务器配置中设置了这两个位置?
  • 我不确定。两者都有效(有 www 和没有 www),但导航变得混乱。如果我将 page1.html 更改为 www.mywebsite.com/page1.html 它会堆叠并尝试转到 mywebsite.com/www.mywebsite.com/mypage1.html

标签: html navigation no-www


【解决方案1】:

您应该做的第一件事是使用相对链接。

话虽如此,您应该检查您的域的 DNS 记录,A 记录有 A "*" 记录,这会占用您所有的子域,包括“www”并将它们指向您的服务器。

或者如果你不需要全部,你可以只输入“www”。

您可以在注册商的控制面板中执行此操作。

导航中的链接是不带正斜杠的链接。

建立您的相对链接/page_x.html 而不仅仅是page_x.html

【讨论】:

    【解决方案2】:

    这是一个常见的导航错误,当您在当前网址时

    http://www.mywebsite.com/home/index.html

    并且你有一个这种形式的锚标记:

    &lt;a class="topNavigationLink" href="page1.html"&gt;page1&lt;/a&gt;

    当您点击此链接时,您将被重定向到:

    http://www.mywebsite.com/home/page1.html

    这是因为href="page1.html"是一个相对链接,而url的基础是/home/

    解决方案:

    如果你想访问:

    http://www.mywebsite.com/home/page1.html

    您必须在链接中添加正斜杠。示例:

    &lt;a class="topNavigationLink" href="/page1.html"&gt;page1&lt;/a&gt;

    这将具有根域/ 的基础

    【讨论】:

      【解决方案3】:

      如果您对您的虚拟主机具有 root(和 ssh)访问权限,您应该在 htdocs 目录中的 www 文件夹中添加一个符号链接。您的 htdocs 文件夹中的所有目录都被您的网络服务器视为子域。因此,如果您的 DNS 记录将您指向通配符子域的服务器,您的网络服务器将处理子域的进一步处理。所以这个符号链接会让你的服务器为 www.mysite.com 和 mysite.com 加载相同的内容。

      cd /patch/to/htdocs
      ln -s www mysite
      

      用您的域名替换 mysite,但不带国家后缀和 www 前缀。它应该给你这样的东西:

      [vhostxxxx@ssh:~/domains/mysite.com/htdocs]$ ls -l
      total 3 
      lrwxrwxrwx  1 vhostxxxx vhostuser  3 2012-11-10 12:47 mysite -> www
      drwxr-xr-x+ 9 vhostxxxx vhostuser 20 2012-11-13 21:52 www`
      

      现在,如果我浏览到 mysite.com,我会看到与 www.mysite.com 相同的网站。

      至于导航中的链接:

      `<div id="page">
          <a class="topNavigationLink" href="http://mysite.com/">Home</a>
          <a class="topNavigationLink" href="http://wwww.mysite.com">Home</a>
          <a class="topNavigationLink" href="wwww.mysite.com">Home</a>
          <a class="topNavigationLink" href="page1.html">page1</a>
          <a class="topNavigationLink" href="/page2.html">page2</a>
      </div>`
      

      这将链接如下(按某种顺序):

      1. 到您的htdocs 中名为mysite 的目录(或符号链接)
      2. 到您的htdocs 中名为wwww 的目录(或符号链接)
      3. 这是错误的。它将指向一个名为wwww.mysite.com 的页面,该页面应位于与您链接它的页面相同的目录中。因此,如果您从htdocs/www/index.html 链接它,它将指向htdocs/www/wwww.mysite.com。如果您的地址包含域,请始终使用 http://
      4. 到名为page1.html 的页面,该页面与您链接它的页面位于同一目录中。如果您从htdocs/www/SomeTopic/page99.html 链接它,它将指向htdocs/www/SomeTopic/page1.html
      5. 到位于文档根目录中的名为page2.html 的页面。如果您从htdocs/www/SomeTopic/page99.html 链接它,它将指向htdocs/www/page1.html

      【讨论】:

      • 很好的解释,除了所有那些提示命令。我刚刚将重定向从 mysite.copm 更改为 www.mysite.com 并解决了问题。所有页面都位于一个巨大的文件中。我没有使用 IIS,所以我的 htdocs 文件夹不存在(或者至少从我看来使用主机 gator)
      【解决方案4】:

      为了解决这个问题,我做了以下操作:

      进入我的主机 gator 控制面板 -> 单击域重定向。 添加了从http://website.com 的永久重定向以重定向到https://www.mysite.com

      这样每次用户在没有 www 的情况下访问 mysite.com 时,它会将他们重定向到 www.mysite.com 并且所有导航都将从那里开始。

      【讨论】:

      • 你可以简单地将它们定向到同一个IP,并且不会有重定向。它只会加载相同的网页。正如我所说。
      • 控制面板在哪里?保存这些设置的服务名称是什么?
      • 这个设置在哪里?
      • 在您域的注册商或经销商的控制面板中。 DNS 记录/设置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多