2017-04-03 54 views
1

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

有没有办法做到这一点?或者可能在开始时执行mkdir命令?

回答

0

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

比方说,你建立一个由

http://example.com/create-DR/username 

称为脚本,让我们还假设你设置根据请求的URI的环境变量:

SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1 

我认为你应该能够在这个环境变量中使用shell-sript与$ DR_User

脚本也可以执行d。如果自动你把它放在你的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你建立一个默认的虚拟主机(MYB端口为80)的要求来处理它们的动态每个用户:

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

这将意味着你的同学们都叫.test.example.com和第一部分(由%1给出)将用于VirtualDocumentRoot - >

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

从来没有尝试或测试过这一点,但理论上应该是这样做的方式。如果没有奏效,我将不胜感激。

EDIT

有此需要的一些模块,至少这些: mod_rewrite的 mod_setenvif mod_alias中 mod_cgi一样