8

好的,这可能以前已经回答过,但显然到目前为止我还没有找到答案。

您可能会注意到有些网站可能允许用户注册以立即在网站中获得自己的子域。

例如,域是 www.domain.com。如果我将新用户注册为 henson,我将在网站中获得自己的页面,例如:www.henson.domain.com(不确定是否需要 www 部分)所以如果用户打开 www.henson.domain.com , 它实际上会打开 www.domain.com?owner=henson

我可以只使用 htaccess 吗?因为我在某处读到这也需要在 cpanel 中手动创建子域(这违背了网站的目的)。

哦,这个网站是用纯 PHP 编码的,所以没有 MVC 框架。如果有人知道如何使用框架(最好是 CodeIgniter)轻松做到这一点,欢迎回答。

感谢你的回答。

4

4 回答 4

5

如果您的服务器上有 CPANEL,则有一个 XMLAPI 允许您通过 PHP 动态创建子域。

是的,动态的,而不是手动的。我刚刚花了最后 2 天的时间(从子域到电子邮件帐户到插件域和 sql dbs、用户......一切的动态创建),cpanel API 干净地处理了这一切。所以花点时间弄清楚。

在此页面的第一个链接下载 XMLAPI: http ://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html 。xmlapi.php 文件是您服务器上唯一需要的文件。

该论坛页面是一个噩梦般的墓地,由非常先进和/或非常hacky的编码人员编写的一半工作示例没有明确的起点。

这是 PHP 中添加子域的基本脚本,将大写替换为您的个人值。这花了我相当长的时间才弄好。祝你好运!下一步,点击该论坛链接并阅读所有其他 API1 和 API2 函数!

include("PATH_TO_THE_DOWNLOADED_xmlapi.php");

    $ip = "YOUR_IP_ADDRESS";
$root_pass = "ROOT_CPANEL_PASSWORD!";


$xmlapi = new xmlapi($ip);
$xmlapi->password_auth("root",$root_pass);

$account = "YOUR_CPANEL_MAIN_ACCNT_NAME";


print $xmlapi->api2_query($account, 'SubDomain','addsubdomain', array(dir=>"public_html/NAME_OF_SUBDOMAIN", domain=>"NAME_OF_SUBDOMAIN", rootdomain=>"MAIN_DOMAIN.com") );
于 2011-03-22T18:28:29.943 回答
5

你不能进去htaccess,你必须设置一个通配符虚拟主机并将其重写到你需要的 URL/目录。有关更多信息,请参见http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/

于 2010-10-20T09:52:50.947 回答
0

您可以解析$_SERVER['SERVER_NAME']以确定使用哪个子域。这www部分实际上是不必要的。这只是一个没有任何意义的子域。大多数情况下,它只是简单地映射到主域。例子:

if (preg_match('/^(www\.)?(.+)\.your-domain.com$/', $_SERVER['SERVER_NAME'], $matches) && $matches[2] != 'www') {
    $subdomain = $matches[2];
    // your logic goes here
}
于 2010-10-20T09:54:55.483 回答
0

这可以在.htaccess您的服务器配置为允许通配符子域的情况下实现。我在 JustHost 中通过创建一个手动命名的 subomain*并指定一个名为 subdomains 的文件夹作为通配符子域的文档根目录来实现这一点。将此添加到.htaccess子域文件夹中的文件中:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.website\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
RewriteRule ^(.*)$ /%1/$1 [QSA]

最后,为您的子域创建一个文件夹并放置子域文件。

于 2016-04-06T18:57:18.377 回答