【问题标题】:Third party url pointing to a certain directory on my website指向我网站上某个目录的第三方 url
【发布时间】:2020-01-16 20:05:03
【问题描述】:

我有一个网站,上面有一些用户个人资料。

例子:

-mysite.com/profiles/user-a
-mysite.com/profiles/user-b

每个配置文件都可以具有附加功能,例如文章、联系页面等。

例子:

-mysite.com/profiles/user-a/articles
-mysite.com/profiles/user-a/contact

我希望允许我的用户注册一个域并将他们的个人资料(他们在我的网站上创建的个人资料)用作他们自己的网站,但使用他们自己的域。

例子:

user-a.com
user-a.com/articles
user-a.com/contact

这样他们就可以更新并在我的网站上拥有个人资料,但同时拥有自己的网站!

有没有一种技术方法可以做到这一点?什么是最简单的,可以为我的用户提供尽可能少的工作量?

谢谢, 卢卡

【问题讨论】:

  • 域名必须是example.com吗?有什么办法可以做到www.example.com?如果你可以直接使用www.example.com,你可以让他们设置一个CNAME记录,这样就很简单了。
  • 谢谢。是的,它可以是一个www。我应该向 cname 添加什么值?我还需要做点什么吗?

标签: php .htaccess dns lamp registrar


【解决方案1】:

首先,您需要配置网络服务器以在任何域上为您的网站提供服务。在 Apache 中,这是通过修改 VirtualHost 配置来完成的,如下所示:

<VirtualHost *:80>

另外,请确保首先加载此配置。 (详情见:Apache default VirtualHost

接下来,您将让您的用户在他们的 DNS 服务器上设置 CNAME 记录,将他们的主机名指向您的主机名。这使得他们的主机名解析为与您的主机名相同的网络地址。请注意,他们不能为顶级域设置 CNAME 记录。

您可能还希望在您的网站中留出一个位置,用户可以在其中配置他们正在使用的主机名。

最后,您需要一种方法来处理这些路径中没有user-a。有两种方法可以做到这一点。首先是修改你的重写规则来直接处理这些路径,并在你的应用程序中使用Host请求头来弄清楚如何处理它。

第二种方法是实际使用重写规则将 Host 标头值注入 URL,然后您可以在应用程序中读取该值。这是来自Apache documentation 的示例:

RewriteRule  "^/(.*)$"         "/www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1"

最后,您的用户所做的只是更新 CNAME 记录,并更新您网站上的配置。一旦在您端设置,这很容易维护。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2012-09-26
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2011-12-06
    • 2011-02-11
    • 2012-08-07
    相关资源
    最近更新 更多