我们已经在学生虚拟机上安装了Xampp。问题是我们不能在httpd.conf中设置静态DocumentRoot。因此,我们必须动态创建DocumentRoot目录。例如: J:/Apache,其中Apache是应该自动创建的目录。
有办法做到这一点吗?或者在启动过程中执行mkdir命令?
发布于 2017-04-03 21:13:32
您可以做的是创建一个.sh文件,其中包含所请求的URI所需的部分。
假设您构建了一个脚本,该脚本由
http://example.com/create-DR/username我们还假设您根据请求的URI设置了一个环境变量:
SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1我认为您应该能够在带有$DR_User的shell中使用此环境变量
如果你把它放在cgi-bin文件夹中,脚本也可以自动执行,并且除了设置DR_User外,还可以将请求重定向到脚本(可以用P来隐藏你正在做的事情):
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/create-DR/(.+)$
RewriteRule .? /path/to/cgi-bin/create-user.sh [P,L]到目前为止,您已经创建了新文件夹并动态设置了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]这允许从IP 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>这意味着您的学生调用.test.example.com,第一部分(由%1给出)将作为VirtualDocumentRoot -->
我不知道文件夹,但请阅读THIS以了解如何寻址特定的文件夹。有几个示例可以确定正确的语法。
我从未尝试或测试过这一点,但理论上应该是这样做的。如果它不起作用,我希望得到一些反馈,说明它是如何为你工作的,以及收到的错误消息。
编辑
这需要一些模块,至少是这些: mod_rewrite mod_setenvif mod_alias mod_cgi
https://stackoverflow.com/questions/43181055
复制相似问题