网站的行为就像它有一个 <base> 标记,但没有

Posted

技术标签:

【中文标题】网站的行为就像它有一个 <base> 标记,但没有【英文标题】:Website acts like it has a <base> tag, but doesn't have one 【发布时间】:2014-02-09 03:38:56 【问题描述】:

我正在寻找调试想法,不知道发生了什么。所有没有 URI 方案的 直接 链接(例如,http://)在锚点中都不起作用。因此,假设我在 ./includes/ 目录中的本地主机上工作:

&lt;a href="www.example.com"&gt;Example&lt;a&gt; 带你到127.0.0.1/includes/www.example.com

&lt;a href="http://www.example.com"&gt;Example&lt;a&gt; 带你到www.example.com

使用不同目录中的文件也会失败:

&lt;a href="www.example.com"&gt;Example&lt;a&gt;127.0.0.1/other/directory开始时带你到127.0.0.1/other/directory/www.example.com

这是一个基本的 html 编码页面。它是用 php 构建的,并且有多个指向 .css 文件和 .js 文件的链接。

我已经确认:

项目文件中的任何位置都没有&lt;base&gt; 标记(netbeans 项目搜索) 任何地方都没有 .htaccess 文件 任何地方都不会进行 mod 重写。 这是我的本地主机 (127.0.0.1) 上的一个项目。但是,其他项目没有同样的问题。 上传到直播服务器时,我没有同样的问题。

在 Chrome 调试器中,URI 看起来是正确的,但是当我单击一个链接(例如 www.example.com)时,它会将页面信息添加到该链接,导致它失败。奇怪的是,即使使用 CTRL-U 查看源代码,当我单击链接时,它也会将我带到相同的错误 URI!

对于 firefox(和 firebug)也是如此。

关于导致错误链接的任何想法?

【问题讨论】:

我看不出问题出在哪里。它正在做它应该做的事情。 http:// 用于完整链接,没有它则用于域的某个子目录或其他页面。 您的示例不是有效的 achor,假定没有本地架构 我很想知道亲近的选民如何回答“这个问题是由无法再复制的问题简单的印刷错误。” 好吧,最近对封闭投票系统所做的更改只是让所有人的情况变得更糟 @SableFoste 出于好奇,您是否可以在您的实时网站上提供一个链接到执行此操作的页面? 【参考方案1】:

您的href 属性值不正确:

<a href="www.example.com">Example<a>

您缺少协议。把http://放在前面:

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

没有它,浏览器怎么知道你不是想要一个相对于当前文件的文件,名为www.example.com?您必须包含协议。

【讨论】:

也许它这样做是因为浏览器总是更正它,但不是在本地主机上。但是您是说没有 URI 方案(即使在实时站点上)这是不正确的吗?你能指出我的文档吗? ietf.org/rfc/rfc2396.txt 和 w3.org/TR/html401/struct/links.html 和一个小逻辑 www.example.com 是一个有效的文件名,你可以在你的服务器上有一个名为该文件的文件 从技术上讲,如果没有http://,链接总是不正确的,但浏览器已自动添加此功能以提供更友好的用户体验。 如果您打算将它转到该域,则它只是一个不正确的链接。如果您有一个名为 www.example.com 的文件,那将是完全有效的。 @SableFoste 无需添加任何东西......达贡和科林在这里一针见血。

以上是关于网站的行为就像它有一个 <base> 标记,但没有的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 SQL Server 列看起来没有默认值,即使它的行为就像它一样?

Chrome 版本 28.0.1500.71 m 损坏的 css(就像它没有完全加载一样)

事件侦听器没有响应

GNU Parallel:如何从gnu并行管道接收stdin,就像它来自文件一样?

sharepoint 是不是具有逐项权限,就像它具有逐项权限一样

如何使用按钮在文本视图中显示文本?就像它是一个键盘[关闭]