2013-05-28 58 views
0

我可以這樣來配置在.htaccess的規則:配置的.htaccess RedirectMatch發揮好與子域

RedirectMatch permanent ^/$ http://www.foosite.com/content/ 

它放在使事情去我的網站的根目錄會改爲向「內容「文件夾。

今天我設置了一個名爲「dev.foosite.com」的子域,我打算使用它來保存正常站點的精確副本,因此我可以開發工作。

問題是,當我衝浪dev.foosite.com它被重定向到www.foosite.com/content/

我只是不知道這些規則是如何工作的不夠,我覺得愚蠢嘗試閱讀文檔後。

如何設置以下的.htaccess:

  1. 隨時有人去www.foosite.com它應該重定向到www.foosite.com/content/

  2. 只要有人去dev.foosite.com它應該重定向到dev.foosite.com/content/

謝謝...

回答

1

您已設置RedirectMatch指令,以便它生成重定向到絕對URL,並且您真正需要的是相對URL - 也就是說,重定向不應取代URL的原始主機名,不管它被調用的是哪個網站都可以工作。要做到這一點,改變RedirectMatch線路(理想情況下這兩個網站上,但至少在dev的子域)到:

RedirectMatch permanent ^/$ /content/ 

(在開發站點的.htaccess也有同樣的效果改變www.foosite.comdev.foosite.com,但你」如果你修改了子域名或者創建了另一個站點副本,上面所述的變化就避免了這個問題。)

另一個關於可能的增強的注意事項,你應該感興趣:你的指令目前丟棄任何路徑信息,以便如果有人去例如http://[www|dev].foosite.com/old/path/to/page.html,她將​​被重定向到.../content/,而不是.../page.html;爲了保存路徑信息,假設它是希望這樣做,你可以:

RedirectMatch permanent ^/(.*)$ /content/$1 

或類似的,假定)是曾經有過的時候,您的網站網址並不需要/content/,和b的東西)有一個一致的方法來映射舊的URL約定和新的。

+0

你先生,太棒了。非常感謝你幫助我。在我的情況下,生產站點和開發站點都在同一個域中,dev.foosite.com域只是一個子域。所以你的第一個例子^/$/content /是所有需要的。謝謝!! –

+0

總是樂於提供幫助。 –