Php 如何在不使用cPanel的情况下动态创建子域

Php 如何在不使用cPanel的情况下动态创建子域,php,.htaccess,laravel,subdomain,cpanel,Php,.htaccess,Laravel,Subdomain,Cpanel,我正在处理laravel,需要使用laravel动态创建子域,而无需进行cPanel或服务器设置 假设这里有abc.xyz.com,我想创建{subdomain}.abc.xyz.com。其中子域将是动态的 为了访问,我在laravel路线中使用了以下代码 Route::group(['domain' => 'abc.xyz'], function() { return 'Main page will be loaded'; }); Route::group(['domain'

我正在处理laravel,需要使用laravel动态创建子域,而无需进行cPanel或服务器设置

假设这里有abc.xyz.com,我想创建{subdomain}.abc.xyz.com。其中子域将是动态的

为了访问,我在laravel路线中使用了以下代码

Route::group(['domain' => 'abc.xyz'], function()
{
    return 'Main page will be loaded';
}); 

Route::group(['domain' => '{subdomain}.abc.xyz'], function()
{
    return 'Subdomain page will be loaded';
});
我也搜索过了,但只找到了.htaccess


这是唯一的方法还是有其他方法可以动态创建子域。

您的主机应该支持通配符子域功能。

不久前,我想在我的项目中动态创建子域。我是用核心PHP编写代码的。我认为这可能对你或其他人有所帮助。 这是我的解决办法

  • 我创建了通配符子域,如前一个答案中@Rockers Technology所示
  • 然后第2步:在我的项目的主目录中,我创建了createSubDomain.php文件,代码如下:

    $subDomain = "mytestdomain";
        $cPanelUser = 'user_name';
        $cPanelPass = 'password';
        $rootDomain = 'main_domain_name';
    
    
    
    //  $buildRequest = "/frontend/x3/subdomain/doadddomain.html?rootdomain=" . $rootDomain . "&domain=" . $subDomain;
    
    
    //$buildRequest = "/frontend/paper_lantern/subdomain/doadddomain.html?rootdomain=" . $rootDomain . "&domain=" . $subDomain . "&dir=public_html/code/" . $subDomain;
    $buildRequest = "/frontend/paper_lantern/subdomain/doadddomain.html?rootdomain=" . $rootDomain . "&domain=" . $subDomain . "&dir=public_html/code/";
    
    $openSocket = fsockopen('localhost',2082);
    if(!$openSocket) {
        return "Socket error";
        exit();
    }
    
    $authString = $cPanelUser . ":" . $cPanelPass;
    $authPass = base64_encode($authString);
    $buildHeaders  = "GET " . $buildRequest ."\r\n";
    $buildHeaders .= "HTTP/1.0\r\n";
    $buildHeaders .= "Host:localhost\r\n";
    $buildHeaders .= "Authorization: Basic " . $authPass . "\r\n";
    $buildHeaders .= "\r\n";
    
    fputs($openSocket, $buildHeaders);
    while(!feof($openSocket)) {
    fgets($openSocket,128);
    }
    fclose($openSocket);
    
    $newDomain = "http://" . $subDomain . "." . $rootDomain . "/";
    echo $newDomain;
    
    在Web服务器上运行此代码后,您可以在subdomain部分中检查是否创建了一个新的子域,如下图所示:


    Cpanel管理员的绝佳链接。谢谢