我有一个域名:TestSite.com。我为这个网站创建了几个子域名,并将它们称为first.TestSite.com,second.TestSite.com等。
我如何参考TestSite.com 相对而无需在first.TestSite.com中的html或aspx文件中对其名称进行硬编码?我的意思是(使用文件夹作为示例)如果我有一个文件夹TestSite和一个子文件夹
测试网站/第一
,然后从头开始我可以通过
引用它的父TestSite文件夹../
我从一开始就使用什么来引用TestSite.com.TestSite.com?感谢。
答案 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.com
,b.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进行测试。