2012-11-17 125 views
0

我有以下的html代码:HTML导航错误。如何处理www.website.com与website.com?在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的正确方法?

+0

这取决于您的服务器。您是否在服务器配置上设置了两个位置? – Ibu

+0

我不确定。这两个工作(与www和没有),但导航变得棘手。 如果我将page1.html更改为www.mywebsite.com/page1.html,它会堆叠并尝试去mywebsite.com/www.mywebsite.com/mypage1。html –

回答

0

为了解决这个问题,我做了以下内容:

走进我宿主鳄鱼控制面板 - > 点击域名重定向。 添加永久重定向从http://website.com重定向到https://www.mysite.com

每个用户去mysite.com不带www的时间通过这种方式,将其重定向到www.mysite.com和所有导航会从那里工作。

+0

你可以简单地直接不存在的他们都是相同的IP,并且不会有重定向。它会简单地加载相同的网页。 正如我所说。 –

+0

哪里会出现在控制面板中?什么是可以保存这些设置的服务名称? –

+0

此设置位于何处? –

1

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

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

将mysite替换为您的域名,但没有国家后缀和www前缀。它应该给你这样的事情:

[[email protected]:~/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
  2. mysite
  3. 到您的htdocs
  4. 这个目录(或符号链接)wwww这是错误的。它将指向一个名为wwww.mysite.com的页面,该页面应该与您链接的页面位于相同的目录中。所以如果你从htdocs/www/index.html链接它将指向htdocs/www/wwww.mysite.com。如果您的地址包含域,请始终使用http://
  5. 转至名为page1.html的页面,它与您链接的页面位于相同的目录中。如果从htdocs/www/SomeTopic/page99.html链接它,它将指向htdocs/www/SomeTopic/page1.html
  6. 到页面page2.html,位于文档根目录中。如果从htdocs/www/SomeTopic/page99.html链接它,它会指向htdocs/www/page1.html
+0

好的解释除了所有那些提示命令。我刚刚改变了从mysite.copm到www.mysite.com的重定向,它解决了这个问题。所有页面都位于一个巨大的文件中。我不使用IIS,所以我的htdocs文件夹是(使用主机的Gator或从我的观点至少) –

1

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

话虽这么说,你应该检查域的DNS记录,A记录有A“*”记录,这需要所有的子域名,包括“WWW”,并在你的服务器指向他们。

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

你在你的注册商做到这一点的控制面板。

你在导航中有什么是没有前导斜杠的链接。

让你的相关链接/page_x.html并不仅仅是page_x.html

+0

这没有工作,但使我一个正确的解决方案 –

1

这里是导航一个常见的错误,当你在当前的URL

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>

这将具有根域的基/

+0

这个没有工作,但使我一个正确的解决方案 –