0

我有以下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 的正确方法是什么?

4

4 回答 4

1

如果您对您的虚拟主机具有 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. mysite到您调用的目录(或符号链接)htdocs
  2. wwww到您调用的目录(或符号链接)htdocs
  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
于 2012-11-17T06:39:12.533 回答
1

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

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

你有一个这种形式的锚标签:

<a class="topNavigationLink" href="page1.html">page1</a>

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

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

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

解决方案:

如果你想访问:

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

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

<a class="topNavigationLink" href="/page1.html">page1</a>

这将具有根域的基础/

于 2012-11-17T06:50:37.697 回答
1

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

话虽如此,您应该检查您的域的 DNS 记录,A 记录有一个“*”记录,它获取您的所有子域,包括“www”并将它们指向您的服务器。

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

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

您在导航中拥有的是没有前导斜杠的链接。

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

于 2012-11-17T06:40:57.320 回答
0

为了解决这个问题,我做了以下事情:

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

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

于 2012-11-17T21:00:43.643 回答