如何在基础href设置为子目录时链接到主页URL的子目录?

20

这里是我的基本URL示例

<base href="http://subdomain.example.com/folder/" />

我想知道如何在尝试时调用主页链接的基本URL。

<a href="/">Home</a>

访问的网址是 http://subdomain.example.com/,但不包括 /folder/

5个回答

32
你需要的是应用程序/网站的虚拟目录名称。这是一个服务器变量,在仅使用HTML的情况下无法获取它,你需要一些服务器端组件,如PHP或ASP.NET。
如果你在根目录中,可以尝试使用相对链接。所以尝试使用.来表示“从这个文件夹开始”。
<a href="./">Home</a>
如果您的问题实际上涉及相反的方向,请执行以下操作:
<a href="../">Home</a>
或者使用绝对链接:
<a href="/folder">Home</a>

或者使用一个 canonical 链接。

<a href="http://subdomain.domain.com/folder">Home</a>

顺便提一下,你也可以设置协议相对链接:

<a href="//subdomain.domain.com/folder">Home</a>

或者,如果您知道在http请求相对于根目录的位置,您可以在JavaScript中推断出根目录链接:

例如,假设您在根目录中有“index.htm”,那么您可以在index.htm中的javascript中像这样获取虚拟目录名称:

document.location.pathname.substr(0, document.location.pathname.length-"index.htm".length)

5

测试用例

看起来,如果您要以 / 开头的 URL(依赖于基础 URL),则需要指定这是从当前目录级别开始的。因此,您的链接应该是:

<a href="./">Home</a>

我不知道你在说什么。我的解决方案是可行的。如果这是基于我的解决方案,你也会对另一个发帖者进行投票...所以这是一种情感反应。 - Joseph Marikle

1

ADLADS(一天迟到 - 一美元短缺)
我来到这里,但无法理解对话内容。
对我而言,我发现我想要的是

<a href="/index.html">Home</a>

也许有其他人需要这个吗?

0

将主机名与应用程序路径连接起来,再加上http/https,即可得到主页URL。以下是代码:

<a href="https://@Request.Url.Host@Request.ApplicationPath">Home</a>

-6

尽量不要在HREF中放置任何内容,即使是空的HREF也可以。

这适用于最新版本的Firefox、Chrome、Opera、Safari和IE7、IE8、IE9。


这只是一个临时解决方案:P,因为一旦发布者想要另一个链接,而不是链接到根目录,他不能仅仅删除href。此外,我确信href是锚标签所必需的属性。真正的解决方案是他需要在斜杠前加上一个点。 - Joseph Marikle
@Joseph 嗯,你可以将其用作临时解决方案。但是,为什么它不适用于除 OP 提到的情况之外的其他情况呢?有任何特殊情况吗,这种方法行不通? - avetarman
它可以用于主页,但当发布者无法弄清为什么“<a href="/about.htm">About</a>”无法工作时,它不能作为修复的解决方案。只需添加“.”更加简洁,保证跨浏览器(因为这是它应该工作的方式),并且在发布者尝试添加其他链接时也会起作用。 - Joseph Marikle
我不会轻率地点踩。我认为这个答案可能对那些遇到相同问题的人有害。如果我是基于感觉做出这样的决定,我不会这样做。我与你没有个人恩怨。我只是认为这个答案可能会引起问题,而不是指出出了什么问题。 - Joseph Marikle

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