首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动创建DocumentRoot

自动创建DocumentRoot
EN

Stack Overflow用户
提问于 2017-04-03 17:30:25
回答 1查看 27关注 0票数 1

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

有办法做到这一点吗?或者在启动过程中执行mkdir命令?

EN

回答 1

Stack Overflow用户

发布于 2017-04-03 21:13:32

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

假设您构建了一个脚本,该脚本由

代码语言:javascript
复制
http://example.com/create-DR/username

我们还假设您根据请求的URI设置了一个环境变量:

代码语言:javascript
复制
SetEnvIf Request_URI "^/create-DR/(.+)$" DR_User=$1

我认为您应该能够在带有$DR_User的shell中使用此环境变量

如果你把它放在cgi-bin文件夹中,脚本也可以自动执行,并且除了设置DR_User外,还可以将请求重定向到脚本(可以用P来隐藏你正在做的事情):

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/create-DR/(.+)$
RewriteRule .? /path/to/cgi-bin/create-user.sh [P,L]

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

代码语言:javascript
复制
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),以便为每个用户动态处理它们:

代码语言:javascript
复制
<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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43181055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档