【问题标题】:Can I dynamically create subdomains (PHP, .htaccess) with GoDaddy Hosting?我可以使用 GoDaddy 托管动态创建子域(PHP、.htaccess)吗?
【发布时间】:2011-08-21 05:02:46
【问题描述】:

我正在尝试使用 .htaccess 和 PHP 的组合在我的 GoDaddy 托管帐户上即时创建子域。我遇到了尝试使用通配符星号修改区域的问题。我完全不熟悉它是如何工作的,并且只是通过广泛探索域管理器找到了关于域的区域内容。我不确定我知道我在做什么。我对 .htaccess 稍微熟悉一些,尽管编写 RegEx 对我来说仍然是一个很大的挑战。

我研究了另一个教程,该教程将使用 .htaccess 将子域重新路由到我的域根目录中的文件夹(例如 sub.domain.com 到 domain.com/sub)。这是我的代码:

#Grab the subdomain from the domain
RewriteCond %{HTTP_HOST} ^([^.]+).MY-DOMAIN.com$
#Make sure the subdomain is not www or example
RewriteCond %{1} !^(www)$
#Check if the directory actually exists before we go there
RewriteCond /home/content/X/Y/Z/XYZ-MY-GODADDY-ACCT/html/%1 -d
#This stops it from looping
RewriteCond %{REQUEST_FILENAME} !^/home/content/X/Y/Z/XYZ-MY-GODADDY-ACCT/html/
#Finally, this is the actual rewrite
RewriteRule (.*) /home/content/X/Y/Z/XYZ-MY-GODADDY-ACCT/html/%1 [L]

截至目前,我已完成以下工作:

  1. 已登录 GoDaddy 域管理器。
  2. 转到工具 > DNS 管理器。
  3. 为我的域打开了区域文件编辑器。
  4. 添加了一个带有主机名 * 和指向 IP 地址的 A(主机)记录我从 @ 条目的 IP 地址复制了值,因为它应该与我的域相同...?
  5. 现在,在等到名称服务器或任何更新和传播的东西之后,当我尝试访问子域时收到 403 错误。

有什么建议吗?

【问题讨论】:

    标签: php .htaccess subdomain wildcard


    【解决方案1】:

    DNS 只是配置的一部分。您需要在 Apache 中的虚拟主机的配置中为 *.mydomain.com 设置一个 ServerAlias,否则 Apache 将不知道将 *.mydomain.com 的请求路由到哪里 - 这意味着 .htaccess 永远没有机会完全可以工作。

    如果 GoDaddy 提供了一种手动编辑虚拟主机指令的方法,或者至少能够通过其 GUI 添加服务器别名,那么这很容易。如果找不到,请联系 GoDaddy 获取信息。

    【讨论】:

    • 哇,那我猜我做不到。不过,我只是将域转移到另一个主机。
    • @MMiller 我对 bigrock.so 感到震惊,所以您要转移到哪个主机?
    【解决方案2】:

    有人建议我将我的答案从here 移到这个问题:

    虽然与能够为每个动态添加的子域创建新的虚拟主机条目不同,但您应该能够使用通配符 DNS 记录并为您的主机帐户添加专用 IP 进行设置。您可以使用此方法将专用 IP 添加到您的主机帐户:

    1. 点击虚拟主机。
    2. 单击选项,然后单击自定义选项卡。
    3. 从服务器 IP 菜单中,选择专用。
    4. 如果您已经购买了专用 IP 地址积分,请单击应用专用 IP 地址积分。或者,如果您需要专用 IP 地址积分,请点击结帐,然后完成购买。

    注意:专用 IP 可能需要 24 小时才能在您的主机帐户上激活。

    您可以在我们的 DNS 管理器中设置 *.yourdomain.com 以使用您的共享主机帐户的专用 IP。

    1. 转到您要更新的域名的区域文件编辑器。
    2. 单击添加新记录。将显示“添加 DNS 记录”窗口。
    3. 从记录类型列表中,选择 A(主机)。
    4. 填写以下字段: 主机名 — 输入 * 指向 IP 地址 — 输入您的主机帐户的专用 IP 地址。 TTL - 选择服务器应缓存信息的时间。
    5. 点击确定。
    6. 单击保存区域文件,然后单击确定。新的 A 记录显示在 A(主机)部分。

    【讨论】:

    • 我不知道为什么你不能简单地在 public_html 文件夹 docroot 中创建子文件夹,然后允许子域拥有自己的 .htaccess 文件,以便在你的系统上完全支持 Laravel 所需的重写规则。或者更好的是,提供对 Laravel、Codeigniter、Symfony 等 PHP 框架的全面支持。
    【解决方案3】:

    我刚通过 GoDaddy 技术支持打完电话,得到了一个出色的解决方案,不需要使用 mod_rewrite 或升级到专用服务器。

    通过https://gateway.godaddy.com 的帐户登录,从下拉列表中选择主机,然后在打开的页面上选择设置。在打开的模式窗口中,单击更改域按钮并输入一个虚拟域(注意虚拟域不需要在 DNS 中注册或输入。这会将您的默认域更改为虚拟域,该域将驻留在public_html 文件夹。

    完成此操作后,转到 cPanel 并从顶部的绿色菜单栏中选择 Addon Domains。输入一个新域并输入您注册的域的名称,然后指定文档根 (DocRoot)。该路径可以是完全在 public_html 文件夹之外的目录位置,因此您可以创建一个对 Laravel 友好的路径,例如 webroot/mydomain.com/public 并在 webroot/mydomain.com 中安装 Laravel。

    同样,您可以为子域指定类似的路径。

    希望这对所有关注此问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2013-08-10
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      相关资源
      最近更新 更多