1

我构建了一个 LAMP Web 应用程序,让用户可以创建他们自己的个人资料页面,他们可以在其中上传他们的简历和作品集。一个人的个人资料的网址将类似于

http://jobbank.com/user/johndoe

John Doe 注册了域名http://johndoefreelancer.com,他希望它指向http://jobbank.com/user/johndoe。任何访问 johndoefreelancer.com 的人都不应该知道它是由http://jobbank.com/user/johndoe驱动的。这意味着浏览器 url 应该持续显示地址,例如:

http://johndoefreelancer.com/aboutme (真的指向jobbank.com/user/johndoe/aboutme) http://johndoefreelancer.com/portfolio(真的指向jobbank.com/user/johndoe/portfolio)

此外,单击任何链接 [a href=""] 应该让您留在 johndoefreelancer.com,而不是让您访问 jobbank.com。

我的问题是,实现这一目标的最佳方法是什么?

我正在考虑:1)向用户提供有关如何使用屏蔽进行域转发的说明

2) 指示用户填写其User Profile信息中的$homeUrl字段,保存到数据库中

3) 在我的 PHP 代码中,如果 $homeUrl 存在,则将所有 [a href="$_SERVER['HTTP_HOST']"] 替换为 [a href="$homeUrl"]

这是正确的方法吗?有没有更好的办法?

4

2 回答 2

1

另一种方法是告诉您的用户将他们的域指向您的 IP 并将它们设置为基于名称的虚拟主机。好处是:

  1. 用户设置然后使用屏蔽转发要容易得多(根据注册商,后者甚至可能无法实现)
  2. 您不必在 PHP 代码中处理 URL 重写。

/user/johndoe如果您不必为 URL 使用前缀(您实际上并不需要,因为您可以在代码中进行域查找以确定用户 ID),这将更容易设置,但也可以使用前缀- 只是在这种情况下 mod_rewrite 设置必须更多地参与(你需要每个域都这样做)。

于 2009-08-08T22:09:04.530 回答
1

目前我能想到的唯一实用方法是:

  1. 在用户个人资料中为域名添加一个字段

  2. 告诉用户让 DNS 主机条目指向您的 IP(或您的主域名)

  3. 创建一个虚拟主机,这是您可能拥有的所有虚拟主机中的第一个。(*)

  4. 在这个虚拟主机中创建一个 index.php 脚本,它在用户配置文件中查找请求的域名并显示页面。

您可能需要为您在页面上打印的 url 实现一个开关。例如。如果您访问特殊索引页面,请使用 / 作为“基本 href”,在所有其他情况下 /user/username 是“基本 href”

*) 如果 apache 收到一个它不知道的名称的请求(因为它没有服务器名称|虚拟主机的别名,它使用第一个虚拟主机作为后备。

于 2009-08-08T23:47:03.397 回答