我们已经在学生VM上安装了Xampp。 问题是我们无法在httpd.conf中设置静态DocumentRoot。所以我们必须动态创建DocumentRoot目录。例如:J:/ Apache其中Apache是应该自动创建的目录。
有办法吗?或者也许在开始时执行mkdir命令?
答案 0 :(得分:0)
您可以做的是创建一个包含所需URI部分的.sh文件。
假设您构建了一个由
调用的脚本http://example.com/create-DR/username
我们还假设您根据请求的URI设置环境变量:
SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1
我认为您应该能够使用 $ DR_User
在shell-sript中使用此环境变量如果你把它放在你的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构建一个default-vhost(myb for port 80),以便动态地为每个用户处理它们:
<VirtualHost *:80>
ServerName testsites.example.com
ServerAlias *.test.example.com
VirtualDocumentRoot /var/www/dev/%1
</VirtualHost>
这意味着您的学生将调用.test.example.com,并且第一部分(由%1指定)将用于VirtualDocumentRoot - &gt;
我不知道该文件夹,但请阅读THIS以了解如何解决特定文件夹。有几个例子可以确定正确的语法。
从未尝试或测试过这个,但理论上应该是这样做的方法。如果它不起作用,我将非常感谢您对该如何工作以及收到的错误消息的一些反馈。
修改强>
这需要一些模块,至少这些: mod_rewrite的 mod_setenvif mod_alias中 mod_cgi一样