如何让用户创建一个新的目录,但作为一个子域而不是PHP?

如何让用户创建一个新的目录,但作为一个子域而不是PHP?,php,directory,subdomain,Php,Directory,Subdomain,上面显示了我所遵循的代码。有一个带有输入字段的表单,当用户在该输入中键入内容并点击submit时,将创建一个名为“他在输入中输入的内容”的新目录,该目录将包含名为“Copy”的现有目录中的所有文件 这很好用。假设用户输入'Example'并点击submit,他将不得不转到 我将如何使其在创建新目录时,用户必须转到子域才能访问它。而不是。我会这样做: 首先配置Web服务器,使其将所有子域流量路由到同一Web空间。使用apache,您可以通过一个通配符虚拟主机条目来实现这一点。例如 <?php

上面显示了我所遵循的代码。有一个带有输入字段的表单,当用户在该输入中键入内容并点击submit时,将创建一个名为“他在输入中输入的内容”的新目录,该目录将包含名为“Copy”的现有目录中的所有文件

这很好用。假设用户输入'Example'并点击submit,他将不得不转到

我将如何使其在创建新目录时,用户必须转到子域才能访问它。而不是。

我会这样做: 首先配置Web服务器,使其将所有子域流量路由到同一Web空间。使用apache,您可以通过一个通配符虚拟主机条目来实现这一点。例如

<?php 

$dirPath = $_POST['username'];
$dirPass = $_POST['password'];

if (file_exists($dirPath)) {
    echo("Not available");
} else {

    if (isset($_REQUEST['sav']))
    {  
        header('Location: http://example.com/'.$dirPath);
    }

    $result = mkdir($dirPath, 0755);

    function recurse_copy($src,$dst) {
        $dir = opendir($src); 
        @mkdir($dst); 
        while(false !== ( $file = readdir($dir)) ) { 
            if (( $file != '.' ) && ( $file != '..' )) { 
                if ( is_dir($src . '/' . $file) ) { 
                    recurse_copy($src . '/' . $file,$dst . '/' . $file); 
                } 
                else
                { 
                    copy($src . '/' . $file,$dst . '/' . $file); 
                } 
            } 
        } 
        closedir($dir); 
    }

    // Source directory (can be an FTP address)
    $src = "copy/";
    // Full path to the destination directory
    $dst = "$dirPath/";

    recurse_copy($src,$dst);
}
?>

我没有对此进行测试,但我认为它说明了这一概念。

我可能会在Web空间配置上使用
$\u服务器['SERVER\u NAME']
,以便代码更具可移植性(即nginx服务器)。此外,它还适用于共享web托管解决方案,但这并不能解决所有子域流量都需要路由到同一web空间的问题。我认为只有使用特定于Web服务器的技术才能做到这一点。当然,通配符的内容需要被替换,我只是指htaccess文件,因为并非所有的Web服务器都支持它。我会走编程路线,而不是使用重写。这样,您的代码库无论如何都不会与Web服务器发生冲突,只会根据请求为子文件夹中的页面提供服务
<VirtualHost *:80>
  ServerName example.com
  ServerAlias *.example.com
  DocumentRoot /path/to/webroot/
</VirtualHost>
RewriteEngine on

RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^(.*)$ %1/$1