2011-09-14 85 views
2

我有一個標準燈的設置,我試圖讓子域,只要適當命名的文件夾中存在自動工作。轉發子域到子文件夾和子文件夾中保存的.htaccess mod_rewrite的規則

如果你熟悉MEDIATEMPLE的GridServer共享託管服務,我試圖模仿它的方式處理通配符子域:

  • 如果subdomain.domain.com要求,查找一個文件夾命名的子域.domain.com
    • 如果發現該文件夾,家稱它爲和服務於網站的這裏面,服從任何.htaccess文件,可能是在那裏。
    • 如果沒有找到文件夾,只顯示domain.com

我已經告訴mod_rewrite的的.htaccess在我的根域是要走的路,我已經能夠檢測子域名並至少指向適當的子文件夾,但我不認爲這會給subdomain.domain.com .htaccess文件自己的mod_rewrite留下任何機會,一旦服務器知道子域的文件夾所在的位置,它就會接管。

這是我爲的.htaccess:

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-]+)\.domain.com$ 
RewriteRule ^(.+) /vhosts/%1.domain.com/html/pages/$1.php [L,QSA] 

...我的文件夾結構:

domain.com 
    html 
     .htaccess 
     vhosts 
      subdomain.domain.com 
       html 
        .htaccess 
        pages 
         index.php 
         pagename.php 

因此,大家可以看到,裏面subdomain.domain.com該網站是依賴於它是自己的mod_rewrite以便運行,因爲頁面文件不在服務器期望的位置。

現在,我知道我可以在適當的條件下在我的根域的.htaccess中包含子域的.htaccess規則,但踢足球是我需要能夠將完全不同的域名指向這些子域名該子域可通過subdomain.domain.com和mydomain.com訪問),因此這些subdomain.domain.com文件夾需要完全自給自足。

那麼,怎樣才能讓我的服務器在一個子文件夾中的正確位置看,同時讓自己的的.htaccess mod_rewrites工作?

任何幫助,非常感謝!


剛把有人建議mod_rewrites是錯誤的方式去了解它,mod_vhs是我想用什麼。有誰知道mod_vhs?

回答

2

我把它用VirtualHosts工作:

NameVirtualHost * 

# Root domain homepage 
<VirtualHost *> 
    DocumentRoot /var/www/domain.com/html 
    ServerName domain.com 
    ServerAlias www.domain.com 
</VirtualHost> 

# Hosted sites 
<VirtualHost *> 
    VirtualDocumentRoot /var/www/vhosts/%0/html 
    ServerName * 
    ServerAlias * 
</VirtualHost> 

第一項捕捉請求我的主頁,提供了標準的網站,而其他內容和路線的不同位置基礎上的第二卡子請求的主機名稱。

1

簡單。只需確保子域名與服務器的DNS註冊,那麼像這樣一個htaccess點吧:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [OR] 
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com 
RewriteRule .* /subfolder [L] 

無需與子文件夾的htaccess的混亂。

+0

謝謝!有一個通配符子域允許我跳過註冊子域與我的DNS? – bryanb

+0

不,相信我,我試過了。您必須向DNS註冊。你可以得到它的工作,但它會導致巨大的文件權限錯誤。我的主持人在週末關閉了,我自己發明了一種新的方法,讓沒有他們的子域名。該子域名結束了000或什麼的。大錯。 ; D – alt

+0

實際上,這似乎只是將瀏覽器轉發到子文件夾(subdomain.domain.com/vhosts/subdomain.domain.com/),而不是將瀏覽器保留在subdomain.domain.com,只是從子文件夾。也似乎沒有注意到子域mod重寫或者... – bryanb