2011-06-12 41 views
0

我一直在尋找一個答案這一段時間,我已經嘗試了很多技巧我自己,但無濟於事,所以我把我的問題給所有你聰明的人。重定向整個目錄作爲我的主目錄與mod_rewrite

我有一個網站都準備好去。本網站的全部內容位於網站的主「www」目錄中。所以現在當我去www.mywebsite.com/main時,它會轉到www/main.php文件。但是,我想將我的網站的全部內容移動到www目錄內的新文件夾中,我將其稱爲「ts」。所以現在,我的main.php文件將在www/ts/main.php

但是,我遇到的問題是我希望所有的URI保持不變,所以我想告訴服務器www.mywebsite .com/main現在可以在www/ts/main.php中找到,而不是之前的位置(www /),並且所有後續內容現在也可以在www/ts而不是www/ts中找到。

我想在我的www /目錄中需要一個.htaccess文件,它告訴服務器www.mywebsite.com的絕對路徑可以在www/ts /找到,但我不知道該怎麼做。我的新www/ts /目錄中還有一個.htaccess文件,它已經重定向了很多URI,但我想我需要告訴服務器目錄中的所有文件都需要忽略/ ts/URI,我不知道該怎麼做。

如果有人能夠指引我正確的方向,我會非常感激。謝謝。

編輯:我在共享服務器上,所以我沒有訪問任何conf文件,因此我需要一個涉及mod_rewrite的解決方案。謝謝。

回答

0

您只需指定VirtualHost的DocumentRoot位置。 檢查你的虛擬主機的Apache配置(它可能是默認的,但你可以爲你的命名的網站創建一個)。並檢查DocumentRoot標籤。

如果它是這樣的:

DocumentRoot /foo/bar/www 

它改成:

DocumentRoot /foo/bar/www/ts 

而這一切。

編輯:

僅爲訪問的.htaccess的限制,如果我們假設你將限制這個新的文件夾重定向只有一個DNS名稱(如果你犯了一個子目錄這可能使其他一些子目錄後)這應該工作:

RewriteEngine On 
# limit this rule on the www.mywebsite.com DNS name requested 
RewriteCond %{SERVER_NAME} ^www\.mywebsite\.com$ 
# limit infinite recursion, when filename is ok... 
# no, in fact not # RewriteCond %{REQUEST_FILENAME} !-f 
# well this one is better, no loop for mod_rewrite, even on 404 
# the rule is applied only once 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
# so here's the rule, map the requested file on the filesystem in ts subdir 
RewriteRule ^(.*)$ /var/www/ts/$1 [L] 
+0

對不起,我應該更清楚 - 我是一個共享的服務器上,所以我不訪問任何通過conf文件,所以我需要涉及的mod_rewrite替代的解決方案。我將追加我的帖子以包含此信息。 – Kevin 2011-06-12 19:45:50

+0

我的朋友,非常感謝。這工作很好,非常感謝,並挽救了我一週的頭痛。 – Kevin 2011-06-13 06:25:12