2012-09-14 49 views
0

我處理以下問題的多個子域:htaccess的從文件夾

我有一個主域名「example.com」和多個子域:

one.example.com 
two.example.com 
three.example.com 

等服務器上。

我在文件夾此子域的內容:

./one/ -> one.example.com 
./two/ -> two.example.com 
./three/ -> three.example.com 

所以服務從這些文件夾的子域的內容,我用下面的htaccess文件:

RewriteCond %{HTTP_HOST} ^one.example.com [NC] 
RewriteCond %{REQUEST_URI} !^/one/.* 
RewriteRule ^(.*) /one/$1 [L] 

它工作正常,但我的子域名內容也可從URL訪問:

one.example.com/one/my-content 

one.example.com/my-content 

等,所以它是duplicite。

這是我需要解決的一個問題。

二是,內容example.com是accessable從

whatever.example.com 
(a.example.com, b.example.com etc.) 

如此反覆duplicite。

所以我的問題是:如何重定向/禁用正在創建重複的URL?

非常感謝,我試了很多版本的代碼,但沒有任何效果。

回答

0

對於你的第一個問題,您可以添加規則,重定向到該文件夾​​和withing該目錄不存在(這樣throuws一個404錯誤)頁面

RewriteCond %{HTTP_HOST} ^one\.example\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} ^one/ 
RewriteRule . /notexists.html [L] 

對於任何請求你的第二個問題,這不應該發生,因爲當你問一個.example.com/folder/file.html它會被重定向到a.example.com/a/folder/file.html(沒有辦法得到'a'的父目錄中的內容)

+0

謝謝你的回答。我試圖使用你的代碼,但沒有結果。我忘記提及,我使用動態創建的子域名(DNS記錄*在CNAME中),也許這就是問題所在,因爲有時候它會表現得很怪,因爲我沒有這方面的經驗...... – Marty

2

我通過將所有請求重定向到該子文件夾到該文件夾​​以及將所有對基本域的請求重定向到另一個來解決此問題,如下所示:

RewriteCond %{HTTP_HOST} ^one\. [NC] 
RewriteRule (.*) /one$1 [L] 

RewriteCond %{HTTP_HOST} ^two\. [NC] 
RewriteRule (.*) /two$1 [L] 

RewriteRule (.*) /zero$1 

它似乎工作,但我也在瀏覽器上修改了我的URL。我如何避免這種情況發生?

+0

你不應該回答這個問題,同時詢問跟進問題。您的後續問題可能無法看到或回答。 – psubsee2003

+0

感謝@ psubsee2003的回覆。我會妥善發表另一個問題。 – Lmpessoa