如何在不对其名称进行硬编码的情况下引用主域名?

时间:2012-04-01 04:55:14

标签: asp.net html

我有一个域名:TestSite.com。我为这个网站创建了几个子域名,并将它们称为first.TestSite.com,second.TestSite.com等。

我如何参考TestSite.com 相对而无需在first.TestSite.com中的html或aspx文件中对其名称进行硬编码?我的意思是(使用文件夹作为示例)如果我有一个文件夹TestSite和一个子文件夹

  

测试网站/第一

,然后从头开始我可以通过

引用它的父TestSite文件夹
  

../

我从一开始就使用什么来引用TestSite.com.TestSite.com?感谢。

4 个答案:

答案 0 :(得分:11)

没有办法使用纯粹的相对链接。你必须将它编程为字符串操作。

类似的东西:

var host = location.host;
var lastPeriod = host.lastIndexOf(".");
var remainder = host.substring(0, lastPeriod);
var afterSecondLastPeriod = remainder.lastIndexOf('.') + 1
var baseDomain = host.substring(afterSecondLastPeriod);
console.log(baseDomain);

编辑:使用正则表达式的较短版本:

var baseDomain = host.match(/[^.]*\.[^.]*$/)[0]

这是通用的,因此它将始终返回最后一部分。无论是a.TestSite.comb.a.TestSite.com等,它都会返回TestSite.com

如果这个假设不正确,你将不得不修改它。

答案 1 :(得分:5)

如果您想保留相关链接,可以使用base元素。

  

[base element的href]属性指定充当基础的绝对URI   用于解析相对URI的URI。

因此,添加base元素,指定您想要的href,页面上的所有相对URI现在都使用您指定为 base的URI URI。

<head>
    <base href="http://testsite.com" />
</head>

这就是你所需要的一切。但是,如果您想使事情变得更清洁,可以使用System.Configuration.ConfigurationManager.AppSettings从web.config中提取该URI。这是一个aspx片段:

<head>
    <base href="<%= ConfigurationManager.AppSettings["rootdomain"] %>" />
</head>

web.config:

<configuration>
  <appSettings>
    <add name="rootdomain" value="http://testsite.com" /> 
  </appSettings>
</configuration>

此方法允许您影响 one 中的许多元素,并且可以从web.config驱动其值。

答案 2 :(得分:1)

由于您标记了ASP.NET的问题,我将假设您要在服务器端执行此操作,因此您不依赖于客户端的JavaScript来生成HTML链接。

首先,确保您的子域网站中有一个web.config文件,并将其添加到配置中:

<configuration>
  <appSettings>
    <add name="MainDomain" value="example.com" /> 
  </appSettings>
</configuration>

在ASPX页面中使用此设置,您的某个子域名页面上的超链接将如下所示:

<a href="<%$ AppSettings: MainDomain %>">Go to main domain home page</a>
<a href="<%$ AppSettings: MainDomain %>/products.aspx">Go to products page on the main domain</a>

将从配置文件中读取name="MainDomain"的设置,并将其插入到显示<%$ AppSettings: MainDomain %>的页面中。这样,您就可以在服务器端创建所需的HTML,而无需硬编码。

如果您需要更改名称,只需更新配置文件,所有页面都将自动使用新域名。

答案 3 :(得分:1)

另一种解决方案是使用实时服务器的原始域名,但将其指向您的开发环境。

您可以通过在此文件中添加行来覆盖Windows中的DNS查找。

  

C:\ Windows \ System32下\驱动程序\等\主机

使用文本编辑器添加以下内容。

127.0.0.1   www.livesite.com
127.0.0.1   first.livesite.com
127.0.0.1   second.livesite.com

这些域现在将映射到locahost。因此,不需要破解HTML进行测试。