-4

每当用户注册并在我的网站上创建帐户时,我都试图实现创建子域。

www.my-domain.com .

然后他可以从地址访问他的文件

www.username.my-domain.com

为此,我们创建了 A 记录并启用了通配符。

通过使用我的 IP 地址创建 *.my-domain.com 的记录。

现在从这一步开始我们就糊涂了?通过使用 JAVA 代码如何动态创建子域怎么办... 任何人都可以建议我们吗?

我们尝试了这个解决方案......

  1. 为您的子域设置通配符 DNS(如何执行此操作取决于您的 DNS 服务器(或服务提供商))。这个搞定了。

  2. 配置您的 HTTP 服务器,以便您的默认虚拟主机将从通配符 DNS 中获取所有内容(如何执行此操作取决于您的 HTTP 服务器)。

我想我们也做了这个。

  1. 注意脚本中的 $_SERVER['HTTP_HOST'] 。

我试图用这些代码给出一些想法......

您可以通过附加 location.pathname 和 location.search 来获得 $_SERVER['REQUEST_URI'] 的等价物:

var request_uri = location.pathname + location.search;

function getAbsolutePath() {
02
    var loc = window.location;
03
    var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);//to get path of current url
04
    return loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
05
}

你能提供一些更多的改进建议吗...?

下一步该怎么走......

4

1 回答 1

2

即使它位于错误的区域,并且您不完全知道自己在要求什么,这可能会有所帮助:

  1. 您的 DNS 必须允许(并设置)通配符。DNSMadeEasy为我工作。
  2. 您的 Apache 配置需要为通配符子域设置。
  3. PHP 必须为每个用户创建文件/目录结构,或者您需要在 .htaccess 文件中使用重定向规则将子域更改为查询字符串(供 PHP 查看),因此http://username.domain.com实际上会尝试加载http://domain.com/~usernamehttp://domain.com/user.php?q=username

研究VirtualDocumentRootServerAlias在您的 httpd.conf 文件中找到 Apache。

您也可以让所有内容都相同DocumentRoot,然后使用 PHP 查找请求的服务器名称(提示:)$_SERVER,然后提供正确的内容。

确实,您需要对此进行更多研究,以了解您可以在您的环境中做什么。大多数托管公司不允许通配符域(在其 DNS 和设置中)。使用您自己的 Apache 服务器是可能的,但您想在尝试任何事情之前知道自己在做什么,无论是否在生产中。

PS Java 不是 Javascript。与 Apache 相关的部分应转到ServerFault并标记为Apache2

于 2013-10-04T19:29:19.277 回答