自动创建DocumentRoot

时间:2017-04-03 09:30:25

标签: windows apache command line

我们已经在学生VM上安装了Xampp。 问题是我们无法在httpd.conf中设置静态DocumentRoot。所以我们必须动态创建DocumentRoot目录。例如:J:/ Apache其中Apache是​​应该自动创建的目录。

有办法吗?或者也许在开始时执行mkdir命令?

1 个答案:

答案 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一样