2010-05-28 100 views
1

我想我錯過了一些東西,並不認爲我真的明白rewriteBase是如何工作的。Apache本地根目錄在本地主機上的開發目錄

我遇到的問題是我有一個生產站點,該站點位於根目錄中,但我的本地主機子目錄中有我的開發站點。例如http://www.sitename.com/ VS http://localhost/sitename/

如果我有例如一個圖像文件夾我想通過在href使用初始斜線引用從站點根圖像。例如,使用相對href(不帶初始斜線)不是一個選項。這將工作在生產現場,但網站的發展正在尋找http://localhost/images/imagename.jpg,而不是http://localhost/網站名稱 /images/imagename.jpg

所以我想所有我需要做的是建立在我的下面。 htaccess文件強制站點根目錄到我的子域的開發環境中:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase /sitename 

但這仍然使用localhost作爲站點根以代替localhost /站點名。

任何人都可以請給我一些指點?

-------------------------編輯-------------------- -------

我停止嘗試在.htaccess文件中執行此操作,並嘗試使用html命令,但這也無效。

最後,我在本地服務器上的Apache中設置了虛擬主機,但它似乎像改變網站根目錄這樣一個可怕的很多矯枉過正。我還擔心LAN網絡上的其他開發人員無法通過虛擬主機正確訪問站點。

我真的需要一些'最佳實踐'的建議,請在WAMP中建立一個可行的開發環境。

+0

我不得不從一個具有8個站點的服務器(虛擬主機)對站點進行大的修改,所以我將站點複製到另一個目錄,併爲該目錄(和一個新的子站點)添加了一個新的虛擬主機。不要以爲這是一個過度的殺手,在我的情況下是模擬開發服務器的最佳方式。 – 2011-03-23 10:06:08

+0

隨着時間的推移,我們一直在爲我們所有的Web開發項目設置虛擬主機。由於編寫OP,它已經成爲我們的標準做法。 – Das123 2011-03-24 01:52:55

+1

這是一個很好的做法。爲了使dev站點可供其他人使用,通配DNS可派上用場。如果您有一臺名爲dev01.example,com的主機,只需將* .dev01.example.com指向那裏。然後,當您需要項目「foo」的一個devsite時,您只需爲foo.dev01.example.com設置一個虛擬主機,並避免觸摸DNS或hosts文件。 – timdev 2011-04-12 23:17:19

回答

0

RewriteBase單獨,基本上,告訴Apache在哪裏應用RewriteRule s。在這裏你沒有任何。順便說一句,你可以完全消除RewriteBase指令,或將其更改爲:

RewriteBase/

下面兩行應該得到它爲你的開發環境只有工作:

RewriteCond %{ REQUEST_FILENAME } !-f 
RewriteRule ^(.+)$ /sitename/$1 [L,QSA] 

這些兩個指令的含義是:「如果請求的文件不存在(-f),並且只有在這種情況下,請將URL前綴/sitename/重寫爲請求的URI($1)」。

欲瞭解更多信息,你可以看看Apache mod_rewrite docsApache URL rewriting guide