2013-02-13 120 views
0

我將如何從根文件夾重定向到一個子文件夾,然後掩蓋該文件夾?htacces重定向和掩碼

所以不是http://root.com/sub_folder

這將是剛剛http://root.com

我曾嘗試:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^root\.com$ 
RewriteRule (.*) http://root.com/$1 [R=301,L] 
RewriteRule ^$ /sub [L] 

然而,這是行不通的。任何幫助將受到歡迎。

回答

0

爲了澄清什麼,我認爲你正在尋找:

你想誰沒有尾隨路徑進入http://root.com被悄悄改寫成http://root.com/sub用戶。

但是,如果用戶直接輸入http://root.com/sub,則需要將它們重定向到http://root.com

root.com中的任何其他路徑應單獨保留。

以下兩條規則完成此操作。如果您有多個域,並且只希望將其應用於一個域,請在每個RewriteRule前添加原始RewriteCond。

RewriteRule ^sub/?$ http://root.com/ [R=301,L] 
RewriteRule ^$ /sub [END] 

第一條規則將帶/不帶斜槓的重定向/子重定向到root.com。第二條規則將基礎域重寫爲/ sub。

編輯:根據Jon Jon的評論,如下,[L]標誌只停止當前一輪處理,並且內部重寫通過規則再次發送(我總是僞造那部分)。因此,您可以用[END]來終止第二行,而這會停止所有重寫處理。值得注意的是,[END]僅適用於Apache 2.4或更高版本,因此如果您使用的是舊版本,則需要完成一些棘手的事情。

+0

這些規則將導致重定向循環。 – 2013-02-14 04:18:17

+0

如何?只有/ sub在第一條規則中被重定向。重定向後,用戶加載不匹配/ base的基本URL,以避免第一條規則觸發。第二條規則被重寫,而不是重定向。 – 2013-02-14 04:35:53

+0

由於重寫引擎循環直到URI停止更改,第二條規則將URI重寫爲'sub',引擎循環,並且它匹配第一條重定向瀏覽器的規則,然後該請求與第二條規則匹配,然後重寫引擎循環和第一條規則得到匹配,重定向瀏覽器等。 – 2013-02-14 05:38:24