2017-04-03 37 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一樣