1

我有一个域: mydomain.com 指向可以托管多个域的托管 apache 服务器“高级”帐户。我购买了另一个域:anotherDomain.com我用我的虚拟主机将其设置为“附加”域。我可以通过几种不同的方式访问 anotherDomain:

mydomain.com/anotherDomain.com
anotherDomain.mydomain.com

anotherDomain.com

但是,只有在使用第一种方法时,我才能mydomain.comanotherDomain.com(使用相对寻址)访问“通用”文件。

有人告诉我有一个脚本我可以编写,因此anotherDomain.com可以使用相对寻址访问 'root' 文件mydomain.com,但他们无法告诉我该怎么做。我环顾了网络,但尽管有很多类似的听起来问题,但我找不到如何去做。

只是为了重申问题:我希望能够访问 中的文件mydomain.com,就像我可以anotherDomain.com访问时一样:mydomain.com/anotherDomain.com,访问时像:anotherDomain.mydomain.comanotherDomain.com

示例: 如果我anotherDomain.com使用 URL访问,mydomain.com/anotherDomain.com那么在index.htmlforanotherDomain.com我可以拥有:

<img src='../imgs/generic.jpg'/>

访问imgs文件夹中的“通用”图像mydomain.com。不幸的是,当我使用 URLs: anotherDomain.mydomain.com或访问此页面时anotherDomain.com,这不起作用。

4

4 回答 4

3

首先,我假设您无权访问服务器的配置文件,因此必须处理.htaccess. 如果你访问权限,会有更好的方法来处理这个问题。

我建议规避这个问题。看看其他答案和评论。您进行了高度复杂的设置。你可能会得到它的工作,但从长远来看,这将是一件痛苦的事情。

我将详细说明并在我的回答中解释一些事情。

据我了解,您的服务器上有以下文件结构:

public_html/
|
+-- index.html           // the index of mydomain.com
|
+-- imgs/
|   |
|   +-- generic.jpg
|
+-- anotherDomain.com/
    |
    +-- index.html       // index of anotherDomain.com

假设您浏览http://anotherDomain.com/. 当浏览器尝试加载generic.jpg时,它将创建此 URL:http://anotherDomain.com/../imgs/generic.jpg。但是,几乎每个浏览器都会将其重写为http://anotherDomain.com/imgs/generic.jpg.

所以你必须告诉服务器如何服务这个文件。

  • 您可以按照@anubhava 的建议创建规则。如果您访问http://anotherDomain.com/imgs/*将其重定向到imgs虚拟主机上的目录http://mydomain.com/。这样内容看起来就属于mydomain.com.

  • 如果有可能,我建议改为创建一个符号链接。

    |
    +-- anotherDomain.com/
        |
        +-- index.html       // index of anotherDomain.com
        |
        +-- imgs --> ../imgs/
    

    这样您就可以轻松访问所有图像。但是,它们将显示为 的内容anotherDomain.com。这可以被视为优势或已经提到的劣势(搜索引擎)。symlink如果您的提供商不通过其接口支持它,有时也可以使用 PHP(函数)来创建符号链接。

于 2013-09-24T00:33:26.490 回答
2

在浪费时间尝试对.htaccess文件执行此操作后,我终于找到了一种方法来用普通的旧html. 在标题中,在所有其他链接之前,放置:

<base href="http://mydomain.com/anotherDomain.com" />

就是这样。删除它以在本地计算机上进行开发。;-)
请记住在使用基本标签时要小心一点

编辑: 我发现这会导致其他问题。例如,相对链接转到http://mydomain.com/anotherDomain.com,而不是http://anotherDomain.com
.htaccess代码添加到http://mydomain.com根目录,例如:

RedirectMatch /anotherDomain.com(/)?$ http://anotherDomain.com

解决了这个问题,但引入了其他问题。仍在寻找这个问题的好答案......有人吗?

于 2013-09-11T00:12:09.563 回答
1

在你的试试这个代码public_html/anotherDomain.com/.htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# for images only
RewriteCond %{HTTP_HOST} ^(www\.)?anotherDomain\.com$ [NC]
RewriteRule ^(imgs/.+)$ http://mydomain.com/anotherDomain.com/$1 [L,NC,R]

# or for all files
RewriteCond %{HTTP_HOST} ^(www\.)?anotherDomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/anotherDomain.com/$1 [L,NC,R]

删除(或注释掉)您的<base...标签。

于 2013-09-23T07:25:45.223 回答
0

通过几个不同的域访问相同的内容可能不是一个好主意。这会使您的内容看起来像是来自搜索引擎的重复内容。如果您保持这个想法,您至少应该尝试使用规范的 url元标记或属性注册所有内容。

现在我通常喜欢相对 url,因为总是用域前缀 url 会使它们更难通过代理重用(但是当使用 ajax 的东西时,例如,相对 url 是不够的,你总是会在某些地方以一些绝对 url 结尾) . 但是在这里你使用相对 url 和'../imgs/generic.jpg'. 这意味着这个 url 更多地是指您将文件放在服务器上的方式,而不是有意义的东西。它在单个域上可能有意义,但在域之间共享内容则不然。如果有一天您需要将新的域文件和目录根目录移动到另一个地方(在另一台服务器上?)。从用户(以及机器人和搜索引擎)来看,您的域不相关。如果通过subdomain.mydomain.com/foo.jpgsubdomain.com/foo.jpg,因此尝试从您的域中共享这些内容对网络的其余部分没有意义,它只是为了您自己的管理,就您而言。因此,请随意使其易于管理。

您最好以 url 对您有意义的方式管理您的 url,例如 '/common/imgs/generic.jpg''/site/imgs/custom.jpg'. 然后在服务器端的域 Virtualhosts 上,您可以处理映射url->directory & files。这个映射可以通过Alias, AliasMatch, 当然还有mod_rewrite指令来设置。

例如一个简单的

Alias /common /path/to/mydomain/assets

将允许您在包含此指令的虚拟主机上映射所有 mydomain.com 资产。在您决定将所有东西移到您的网络服务器上的那一天,您只需要重新编写 apache 重写和别名,而不是所有代码 url 管理。

于 2013-09-23T13:03:36.917 回答