2012-10-22 114 views
2

我使用Virtualmin API創建了一系列使用php的第三級域(直到這裏都是正確的)。我需要一個解決方案來爲這些子域中的每個子域提供相應的子目錄,即
sub1.domain.com進入C:\ xampp \ htdocs \ domain_com \ subsites \ sub1;
sub2.domain.com => C:\ xampp \ htdocs \ domain_com \ subsites \ sub2。
我也應該使用Virtualmin API來做到這一點,但是用戶可以看到他被重定向到的子目錄,而且很糟糕。應該在子目錄中將子域轉換爲httpd.conf中的常規解決方案,以不修改和重新啓動Apache連續性。與此同時,向用戶顯示的URL必須保持爲「sub1.domain.com/whatever_dir/user_file.php」。 我試着像這些的重寫規則,以獲得它:第三級域名

<VirtualHost *:80> 
    ServerName www.domain.com 
    ServeAlias *.domain.com 
    DocumentRoot C:/xampp/htdoc/domain_com/ 
    Option +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.domain.com 
    RewriteCond %{HTTP_HOST} ^(w*).domain.com 
    RewriteRule ^$ subsites/%1%{REQUEST_URI} 
</VirtualHost> 

有了這個規則我succeded來調用「%1」目錄中的所有文件。但是,如果這些文件中的任何一個調用圖片或任何其他資源,則此資源的路徑始終指文檔根,而不是調用文件。所以該文件被正確調用,但具有錯誤的資源路徑!

對於Alias,AliasMatch也是如此。我開始意識到Alias和RewriteRules不是實現這個目標的正確手段,但我不知道其他的。

感謝您的關注。我希望有人有一個建議。 Emanuele。

回答

0

我很隨便地修復了自己的問題。 RewriteRule具有在其他地方重定向請求的效果。每次它這樣做時,Apache都會爲其新設備重新啓動,並導致內部服務器錯誤! - 對不起,我不知道如何使用這個博客。這是修復。

<VirtualHost :80> 
    ServerName www.domain.it 
    ServerAlias *.domain.it 
    DocumentRoot "C:/xampp/htdocs/domain_com" 
    <Directory "C:/xampp/htdocs/domain_com"> 
    Options FollowSymlinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www. 
    RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([0-9A-Za-z_-]+).domain.com(.*/?)([0-9A-Za-z-_.?&=%])$ 
    RewriteRule !^siti siti/%1/%2%3 
    </Directory> 

這樣首先規則加前綴「西蒂/」請求,並whatother需要我。當Apache再次轉向路徑時,它會匹配新的不是「!」,以「siti」開始「^」,並停止它。事實上,它功能完美。