2009-12-23 92 views
0

如果我錯過了某人,請事先致歉,我想看看是否有人有我自己的.htaccess的困境:幫助使用.htaccess文件的重寫規則

目前,我有以下網站:www.example.com

我想將其設置如下所示:somewebsite.example。 com

並讓子域名「somewebsite」指向我的根目錄上的子文件夾。如果該子域不可用,請將它們返回到根文件夾中的error.html

例子:

/ 
error.html 
/img 
/websites 
    /somewebsite 
     index.html 

這裏是我與我的工作的根文件夾的.htaccess:

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^somewebsite\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} !somewebsite/ !-d 
RewriteRule ^/(.*)$ http://somewebsite.example.com/$1 [L,R=301] 

我不驚人的正則表達式用或.htaccess文件,但什麼時我錯過了完成我的目標?

+0

我不清楚你的意思是「指向」。也許你可以用mod_rewrite描述你想要的動作。你想*重寫* http://someweb.domain.com/foo到別的東西嗎?你想要一些請求(哪些?)被重定向到someweb.domain.com?等等。 – Cheeso

回答

0

試試這個規則:

RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$ 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule^%{DOCUMENT_ROOT}/%1%{REQUEST_URI} [L] 

這條規則測試,如果foobar.example.com與任意foobar的可以映射到位於文檔根目錄中的現有目錄。

+0

感謝Gumbo的幫助;讓我澄清的場景: 我想要一個訪問者來到一個頁面http://chris.domain.com 其中「克里斯」是一個「網站」文件夾的子文件夾駐留在服務器根(根 - >網站 - >克里斯)。 所以我打算在服務器根目錄下有一個.htaccess文件來重定向它。 在chris文件夾中,我想要一個.htaccess文件,我可以告訴它是http://www.chris.com或http://chris.com(當我在php中寫入它時) 希望這有助於澄清情況。謝謝! – Chris

+0

@Chris:然後只需改變路徑:'%{DOCUMENT_ROOT}/websites /%1 ...' – Gumbo