我正在为客户创建现有网站的单页,但他们要求我将其托管在自己的帐户上,并且他们可以从其主机“指向它”。他们希望将 URL 保留在名称中。例如 www.theirsite.com/new-page
实现这一目标的最佳方法是什么?
如果他们创建一个子域名(subdomain.theirsite.com)并将 A 记录指向我的 IP 地址上的页面(ip.ip.ip/page),有没有办法维护他们想要的 URL(www.theirsite.com/new-page)?
答案1
不确定我是否理解了你的问题...但是如果你想将网站的不同虚拟子目录映射到不同的主机,你可以使用反向代理来实现。Apache httpd 有一个模块(mod_proxy_http) 为了这。
如果网站前面已经有代理,则更改应该非常简单。如果没有,则必须从头开始配置。
答案2
如果它们想要www.theirsite.com
出现在浏览器地址栏的 URL 中,那么负责应答连接的服务器www.theirsite.com
必须提供服务某物因为/new-page
,没有办法完全卸载一切到其他地方 - 而不是通过子域或 DNS A 记录欺骗(*)。
但是,还有一种非常简单的方法尚未提及 -/new-page
提供一个带有iframe
元素的占位符页面,并告诉浏览器使用其他名称(子域名或任何其他名称)从您的服务器加载内容。这会在 URL 栏中显示他们的名字,并让浏览器建立另一个连接以从您的服务器加载内容。您可以为他们的网站创建一个子域名,并让您的服务器响应该名称,这样它看起来就像一个相关服务器。
对于任何查看源代码的人来说,它都是从其他地方加载的,但除非网站有一些活动的登录部分、需要所有内容都使用完全相同名称的安全性或涉及 HTTPS 证书,否则它会正常工作,并且对于任何正常的查看者或普通用户来说,它都会在 URL 栏中显示为他们的网站。
整合它的方式看起来就像他们网站的一部分,但由您托管,使用反向代理,正如@sam_pan_mariusz 建议的那样。
在这里,他们的网络服务器应答连接,他们的网络服务器从您的服务器加载内容,然后他们的网络服务器将内容返回给浏览器。这需要在他们的服务器上进行配置,并且会增加他们的服务器的工作量,但对于外界来说,/new-page
这与网站上的任何其他内容大致没有区别。
(*) 没有办法将 A 记录指向特定页面,“A 记录”位于 DNS 中并且很早就被查找,而 URL 路径在 HTTP 请求中出现得晚得多,在连接打开之后;它们是非常不同的层,不容易混合。
答案3
如果我理解正确的话:他们有一个网站http://www.theirsite.com/,在某处维护它,并希望你维护该页面http://www.theirsite.com/somepage别的地方。
如果我是对的,而你想让事情简单化,答案是“不”。如果他们想让你单独托管,它将在单独的域名上(可能是子域名,但仍然是其他名称,例如http://sub.theirsite.com/somepage)。如果他们想保留完整的域名,则需要自行托管。
这种情况有解决方案,但很复杂。他们可以将所有内容托管在他们的服务器上,但将特定页面地址反向代理到由您维护的其他服务器。如果他们能够进行此设置,那么就可以做到这一点,但他们需要在其托管服务器上执行配置更改。