2012-08-29 164 views
0

我正在嘗試將名爲styles.css的所有主要樣式表的請求重定向到min/g=css的縮小腳本,以便我可以實時處理CSS文件,並讓服務器使用重定向到最小化腳本。mod重寫規則來重定向css請求來縮小?

基本上,這在我的HTML文件...

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

變成這個

<link rel="stylesheet" href="min/g=css" type="text/css"> 

當服務器請求它。

這是我迄今的嘗試,但它似乎並沒有工作。常規CSS文件只是用來加載服務器上..

RewriteRule ^css/styles\.css$ min/g=css 

沿着這些同樣的思路,我也有一個,當我開始建立子目錄頁面恐懼。這個重寫規則是否需要成爲「絕對路徑」?感謝任何人的幫助!

+0

不能確定的主要問題,但肯定的,重寫應該是絕對路徑 - 你應該使用^/CSS /樣式... – zenkaty

+0

@zenkaty如果規則位於htaccess文件中,那麼'^/css/styles'將不起作用 –

回答

1

沿着這些相同的路線,我也擔心我什麼時候開始建立子目錄頁面。這個重寫規則是否需要成爲「絕對路徑」?感謝任何人的幫助!

在htaccess文件應用規則的時候,但如果規則是在服務器/虛擬主機的配置,那麼你就需要領先的斜槓重寫引擎剝掉URI的斜線。目標(你的規則的min/g=css部分)也不需要是絕對路徑,但是如果有一個前導斜槓,apache會將其應用於基礎(通常是文檔根目錄)。如果沒有前導斜槓,apache會嘗試猜測你是指文件路徑還是URI路徑,有時候它猜對了。如果你包含一個RewriteBase指令,那麼apache將總是使用它作爲它的基礎。

所以這裏的問題真的變成了:你有哪些規則?在一個htaccess文件中,你只剩下基地的問題。如果它在server/vhost配置中,則需要知道該基礎以及向正則表達式添加前導斜槓:^/css/styles\.css$。或者你可以安全,並使其成爲選項:^/?css/styles\.css$

現在,基地。基地是相對路徑附加到的地方。你的css鏈接是這個css/styles.css。如果從該網址加載該頁面:http://domain.com/some/path/mypage.html,則基址http://domain.com/some/path。相對路徑的分辨率爲http://domain.com/some/path/css/styles.css。在這個例子中,你的規則需要在目錄中/some/path點去,你需要:

RewriteBase /some/path/ 

您的規則之上。否則,你可以在基地簡單地附加到規則的正則表達式和目標:

RewriteRule ^/?some/path/css/style\.css$ /some/path/min/g=css [L] 
+0

謝謝您的詳細,並花時間解釋這一點。然而,一旦我們看到第三段,我就會感到困惑。我明白,如果我是一個深入到/ some/path /的幾個目錄,那麼我需要追加一個基礎。但是,由於我將此添加到靜態htaccess文件中,路徑將根據目錄進行更改。但是,如果我猜測,因爲我的/ min /文件夾和我的/ css /文件夾都在根目錄中,我的完整正確的語法是:RewriteRule^/?css/styles \ .css $/min/g = css是的? (什麼是L?) – PaulHanak

+0

@PaulHanak是的,如果'css'和'min'都在文檔根目錄下,那麼只需添加一個斜槓即可:'RewriteRule^/?css/styles \ .css $/min/g = css [L]'。 '[L]'標誌只是表示當前迭代中的重寫應該停止(L代表「Last」)。 –

+0

太棒了。十分感謝你的幫助。 – PaulHanak