Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 自动创建DocumentRoot_Windows_Apache_Command_Line - Fatal编程技术网

Windows 自动创建DocumentRoot

Windows 自动创建DocumentRoot,windows,apache,command,line,Windows,Apache,Command,Line,我们已经在学生虚拟机上安装了Xampp。 问题是我们不能在httpd.conf中设置静态DocumentRoot。因此,我们必须动态创建DocumentRoot目录。例如:J:/Apache,其中Apache是应该自动创建的目录 有办法吗?或者在启动期间执行mkdir命令?您可以做的是创建一个.sh文件,其中包含您需要的请求URI部分 假设您构建了一个由调用的脚本 http://example.com/create-DR/username 我们还假设您根据请求的URI设置了一个环境变量: Se

我们已经在学生虚拟机上安装了Xampp。 问题是我们不能在httpd.conf中设置静态DocumentRoot。因此,我们必须动态创建DocumentRoot目录。例如:J:/Apache,其中Apache是应该自动创建的目录


有办法吗?或者在启动期间执行mkdir命令?

您可以做的是创建一个.sh文件,其中包含您需要的请求URI部分

假设您构建了一个由调用的脚本

http://example.com/create-DR/username
我们还假设您根据请求的URI设置了一个环境变量:

SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1
我认为您应该能够在shell sript中与$DR_User一起使用此环境变量

如果将脚本放在cgi bin文件夹中,并且除了设置DR_,用户还可以将请求重定向到脚本,则脚本也可以自动执行(将使用[p]来隐藏您正在执行的操作):

到目前为止,您已经创建了新文件夹并动态设置了EV。目前的缺点是,它可以用于创建过多的文件夹。我建议你设置一个安全机制。例如,您只允许特定IP(教师PC)执行脚本:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/create-DR/(.+)$
RewriteCond %{REMOTE_ADDR} ^10\.11\.12\.13|4$
RewriteRule .? /path/to/cgi-bin/create-user.sh [P,L]
这允许从IPs 10.11.12.13和10.11.12.14执行脚本

现在你应该允许你的学生调用他们的文件夹。 要处理请求,请使用VirtualDocumentRoot构建默认vhost(端口80的myb),以便为每个用户动态处理它们:

<VirtualHost *:80>
  ServerName testsites.example.com
  ServerAlias *.test.example.com
  VirtualDocumentRoot /var/www/dev/%1
</VirtualHost>

ServerName testsites.example.com
ServerAlias*.test.example.com
VirtualDocumentRoot/var/www/dev/%1
这意味着您的学生将调用.test.example.com,第一部分(由%1给出)将用于VirtualDocumentRoot-->的

我不知道该文件夹,但请阅读以了解如何处理特定文件夹。有几个例子可以确定正确的语法

从未尝试或测试过这一点,但理论上这应该是实现这一点的方法。如果它不起作用,我希望您能提供一些反馈,说明它对您的作用以及收到的错误消息

编辑

这需要一些模块,至少这些模块: 修改 mod_setenvif 模组别名
mod_cgi

您可以做的是创建一个.sh文件,其中包含您需要的请求URI部分

假设您构建了一个由调用的脚本

http://example.com/create-DR/username
我们还假设您根据请求的URI设置了一个环境变量:

SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1
我认为您应该能够在shell sript中与$DR_User一起使用此环境变量

如果将脚本放在cgi bin文件夹中,并且除了设置DR_,用户还可以将请求重定向到脚本,则脚本也可以自动执行(将使用[p]来隐藏您正在执行的操作):

到目前为止,您已经创建了新文件夹并动态设置了EV。目前的缺点是,它可以用于创建过多的文件夹。我建议你设置一个安全机制。例如,您只允许特定IP(教师PC)执行脚本:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/create-DR/(.+)$
RewriteCond %{REMOTE_ADDR} ^10\.11\.12\.13|4$
RewriteRule .? /path/to/cgi-bin/create-user.sh [P,L]
这允许从IPs 10.11.12.13和10.11.12.14执行脚本

现在你应该允许你的学生调用他们的文件夹。 要处理请求,请使用VirtualDocumentRoot构建默认vhost(端口80的myb),以便为每个用户动态处理它们:

<VirtualHost *:80>
  ServerName testsites.example.com
  ServerAlias *.test.example.com
  VirtualDocumentRoot /var/www/dev/%1
</VirtualHost>

ServerName testsites.example.com
ServerAlias*.test.example.com
VirtualDocumentRoot/var/www/dev/%1
这意味着您的学生将调用.test.example.com,第一部分(由%1给出)将用于VirtualDocumentRoot-->的

我不知道该文件夹,但请阅读以了解如何处理特定文件夹。有几个例子可以确定正确的语法

从未尝试或测试过这一点,但理论上这应该是实现这一点的方法。如果它不起作用,我希望您能提供一些反馈,说明它对您的作用以及收到的错误消息

编辑

这需要一些模块,至少这些模块: 修改 mod_setenvif 模组别名 mod_cgi