如何在HTML中引用相对子域名?

13
假设我有一个被多个域名访问的网站,例如domain1.comdomain2.com。如果我使用相对链接,例如href="/wiki",那么无论我通过哪个域名访问网站,该链接都会将我带到正确的位置。
假设我想要使用wiki.domain1.comwiki.domain2.com,是否有一种方法可以使链接相对于域名?
如果没有,是否有一种优雅的方式处理上述wiki链接,当多个域名指向同一台服务器时?

1
请注意,以正斜杠开头的链接是绝对路径,而非相对路径。 - Christian
1
使用JavaScript,您可以轻松更改客户端所有链接,以便在发送到“http://domain*.com/wiki”时插入“wiki.”。 - Denys Séguret
1
@Christian 以正斜杠“/”开头的链接被称为根相对链接。来源 - codesnerd
2个回答

15

不行,你需要提供整个域名。要从 domain1.com 链接到 wiki.domain1.com,链接必须像这样: href="http://wiki.domain1.com"


谢谢,如果多个域名指向同一台服务器,有没有更优雅的处理方式?(将此添加到问题中)。 - Alex
通常可以使用 $_SERVER['HTTP_HOST'] 来确定当前域名。编写您的脚本以围绕此进行... - deceze

6

使用相对路径是不可能的,因为子域实际上是完全不同的域名。

如果您真的不能使用绝对URL,但可以使用PHP,您可以尝试使用此代理脚本:

<?php

if(!isset($_GET['url'])) {
    die('Missing URL!');
}

$subdomain_url = 'http://subdomain.example.com/';
$file_path = $_GET['url'];

$file_url = $subdomain_url . $file_path;

$mime = finfo_open(FILEINFO_MIME, $file_url);


header('Content-Type: ' . $mime);
header('Content-Transfer-Encoding: Binary'); 
header('Content-disposition: inline; filename="' . basename($file_path) . '"'); 

readfile($file_url);

将其保存到一个文件中,例如imgproxy.php,然后您可以像这样在其他子域上链接图像:

<img src="imgproxy.php?url=images/logo.png">

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