如何让用户连接自己的域名
问题描述:
我正在创建一个在线服务,为不同组织的成员创建一个公共个人页面。我希望组织附加一个域(可能是其主要网址的子域),但我不确定如何通过PHP进行设置。如何让用户连接自己的域名
什么我要找的是怎样的tumblr可让您连接自己的域名的例子:profile.useraddedurl.com/XYZ
所以我想什么是到显示appurl.com/user.php?domain=profile.useraddedurl.com & ID = XYZ
我想知道在PHP中设置此最好的方式,如果有任何特殊的服务器配置需放进去地点。
我想我可能需要动态创建一个htaccess文件,但是有没有更好的方法来完成这个?
答
首先你需要让用户设置他们的个人域名。
他们需要将它指向正确的IP地址(您可能希望他们使用CNAME记录),但您需要为他们提供他们需要的信息。
您还需要提供一个表格,以便他们告诉您他们希望您为他们处理的域名。将它存储在你的数据库中。
然后,当您收到请求时,您需要显示正确的网站。
一般的方法是确保所有请求都由相同的脚本处理(使用前端控制器模式)。
如果要使用虚拟主机名来处理特定领域有不同的脚本(例如api.example.com
)然后确保默认一个(如果你使用的是Apache第一个定义的)是这一个。如果你不想这样做,那么完全避免虚拟名称托管,因为它只会产生复杂性。
然后,在PHP脚本中,查看$_SERVER['HTTP_HOST']
。将它与数据库中的注册域进行比较。如果你得到一个匹配,显示该用户的网站。否则,显示您的默认值。
用户域是否需要添加为服务器上的别名?或者这需要在VPS上而不是在共享主机上进行设置? – Dukatu
“用户域是否需要添加为服务器上的别名?” - 这取决于你的意思是“别名”。 [Apache别名指令](https://httpd.apache.org/docs/current/mod/mod_alias.html#alias)适用于不是主机名的路径。我已经描述了答案中所需的DNS或虚拟名称。 – Quentin
“这是否需要在VPS而不是共享主机上设置?” - 在共享主机上,您不需要访问权限即可将网站设为默认网站,如答案倒数第二段所述。 – Quentin