【问题标题】:How to allow users to connect their own domain如何允许用户连接自己的域
【发布时间】:2018-04-01 15:46:37
【问题描述】:

我正在创建在线服务,为不同组织的成员创建公共个人资料页面。我想让组织附加一个域(可能是其主 url 的子域),但我不确定如何通过 PHP 进行设置。

我正在寻找的一个例子是 Tumblr 如何让您连接自己的域:

所以我希望 profile.useraddedurl.com/XYZ 显示 appurl.com/user.php?domain=profile.useraddedurl.com&id=XYZ

我想知道在 PHP 中进行设置的最佳方式,以及是否需要进行任何特殊的服务器配置。

我想我可能需要动态创建一个 htaccess 文件,但是有没有更好的方法来完成这个?

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    首先您需要让用户设置他们的个人域。

    由他们将其指向正确的 IP 地址(您可能希望他们使用 CNAME 记录),但您需要向他们提供执行此操作所需的信息。

    您还需要提供一份表格,以便他们告诉您他们希望您为他们处理的域名。将其存储在您的数据库中。

    那么您需要在收到请求时显示正确的站点。

    一般的做法是确保所有请求都由同一个脚本处理(使用前端控制器模式)。

    如果您想使用虚拟名称托管来处理具有不同脚本的特定域(例如 api.example.com),请确保 default 一个(如果您使用 Apache,则首先定义的那个)是这个。如果您不想这样做,请完全避免使用虚拟名称托管,因为它只会造成复杂性。

    然后,在 PHP 脚本中,查看 $_SERVER['HTTP_HOST']。将其与数据库中的注册域进行比较。如果您找到匹配项,请显示该用户的站点。否则,显示您的默认设置。

    【讨论】:

    • 是否需要将用户域作为别名添加到我的服务器上?还是需要在 VPS 而不是共享主机上进行设置?
    • "用户域是否需要作为别名添加到我的服务器上?" —这取决于您所说的“别名”是什么意思。 Apache alias directive 用于路径而不是主机名。我已经在答案中描述了 DNS 或虚拟名称托管所需的内容。
    • "这需要设置在 VPS 上而不是共享主机上吗?" — 在共享主机上,您将没有必要的访问权限,无法将您的站点设置为答案倒数第二段中所述的默认站点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多