2011-07-20 137 views
0

我一直在這裏讀書多個職位約htaccess的文件重寫,但沒有似乎適合我的問題(正確)。htaccess的文件夾重寫

我的問題是:

我對服務器,WEBSITE1和網站2 2個文件夾。

當用戶進入到www.foo.com祝視覺網址保持不變,但希望服務器URI去/website1/它會加載的index.php爲WEBSITE1

然後我只想當一回事一個用戶進入www.bar.com再次URL沒有改變,但是這一次它鏈接到/website2/它會加載的index.php爲第二的網站。

會很感激一些幫助,這是我還在學習重寫。解釋的例子將受到高度讚賞。還有任何意見的最佳實踐(如果他們是任何)也將不勝感激。

+1

您正在尋找虛擬主機,不能重寫。 – KingCrunch

回答

0

KingCrunch是正確的 - 設置這樣的環境的正確方法是使用<VirtualHost>指令在Apache的配置文件。

如果出於某種原因,這需要有多納通過重寫和的.htaccess ..然後你需要mod_rewrite的啓用,並允許.htaccess文件中包含重寫規則(AllowOverride指令)。

下面是規則:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

# rule #1 
RewriteCond %{HTTP_HOST} =www.foo.com 
RewriteCond %{REQUEST_URI} !^/website1/ 
RewriteRule (.*) /website1/$1 [L] 

# rule #2 
RewriteCond %{HTTP_HOST} =www.bar.com 
RewriteCond %{REQUEST_URI} !^/website2/ 
RewriteRule (.*) /website2/$1 [L] 

這個代碼將被放置在.htaccess文件在根文件夾。如果放置在別處(例如配置或虛擬主機上下文),可能需要進行一些調整。

拳規則是www.foo.com和第二另一個域名。這些規則幾乎是一樣的。我們告訴Apache檢查域名(通過{HTTP_HOST}請求變量),以及它是否將我們的域名重寫(內部重定向)URL與更深的一個文件夾相匹配。第二個條件是防止重寫循環(不要重寫已經重寫的URL)。作爲Apache,必須在執行重寫之後進入下一次重寫迭代(即它是如何工作的),並且需要此條件來停止循環。

有用的鏈接:http://httpd.apache.org/docs/current/rewrite/

+0

非常感謝你的伴侶。這很好。儘管每個人都反對,但我只是將共享主機改爲經銷商,讓生活更輕鬆。再次感謝您的貢獻 – fl3x7