2012-02-23 250 views
7

有沒有辦法使用htaccess來告訴子目錄充當整個站點的根目錄?使用.htaccess將一個子目錄設置爲根目錄

舉例來說,如果我有一個網站下http://localhost/testsite/,並在它的index.php文件,我不得不使用下面的代碼樣式表的引用..

<link rel="stylesheet" type="text/css" href="/css/layout.css" /> 

難道我再作出這樣的負載/本地主機/測試網站/ CSS/layout.css中?

爲了解決這個問題,我爲每個站點設置了localhost子域名,雖然它的工作原理並不理想。

非常感謝。

+6

設置虛擬主機。 – 2012-02-23 12:34:44

+0

正如cillosis指出的,這通常會在您的Apache配置中完成。只需將[DocumentRoot](http://httpd.apache.org/docs/2.0/mod/core.html#documentroot)設置爲所需的文件夾即可。 – 2012-02-23 18:27:02

回答

2

當然,所有相對URI(和你)是相對於基準URI默認情況下是文檔的URI:

http://localhost/testsite/index.php 

你只需要告訴要添加的部分:

<link rel="stylesheet" type="text/css" href="./css/layout.css" /> 
              ^
              ` see this dot 

例子:

Base URI  :: http://localhost/testsite/index.php 
Relative URI :: ./css/layout.css 
Result  :: http://localhost/testsite/css/layout.css 

如果你需要有這樣的更加模塊化的,有多種方法可以做到THA噸。一種是在HTML文檔中明確設置基本URI(參見<base>)。

另一種方法是在服務器端根據請求URI和您的站點的根路徑解析相對鏈接。一個例子見this answer

20

如果你想保留'href =「/ css/layout.css」'部分,那麼是的,你可以設置一個重寫規則。你只需要小心,不要重定向任何以/ testsite開頭的東西(否則你最終會得到一個循環)。

贊(根的.htaccess):

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/testsite/.*$ 
RewriteRule ^(.*)$ /testsite/$1 [QSA,L] 

在那裏,你將能夠從任何訪問您的文件layout.css中:

http://localhost/testsite/css/layout.css

http://localhost/css/layout.css