2010-05-18 26 views
0

我們的Linux服務器使用Apache 2.x,Plesk 8.x託管多個電子商務網站。爲了利用瀏覽器緩存,我們希望使用Google提供的jquery.js副本。使用mod-rewrite將jquery.js的請求重定向到GoogleAPI緩存

因此,在每個vhost.conf文件中,我們可以使用下面的重寫規則

RewriteCond %{REQUEST_FILENAME} jquery.min.js [nc] 
RewriteRule . http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js [L] 

而且在vhost_ssl.conf

RewriteCond %{REQUEST_FILENAME} jquery.min.js [nc] 
RewriteRule . https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js [L] 

現在確定這些規則在個別vhost.conf做工精細每個域的文件。然而,我們主持了200多個域名,我希望他們能夠工作,但似乎無法讓他們在httpd.conf文件中全局工作。

挑戰有以下幾種:

  1. 獲取重寫規則在httpd.conf中
  2. 檢測工作,如果HTTPS是,如果是和IS是安全網頁,重寫...
  3. 每個單獨的域將仍然有它自己的自定義mod重寫規則。哪些規則優先 - 全局或每個域?他們合併?如果我在全局httpd.conf中有「RewriteEngine On」指令,然後再在vhost.conf中,可以嗎?

請讓我知道你們的建議是什麼。渴望解決這個問題。

+0

您認爲將您的客戶融入其中不失爲一個好主意嗎?如果他們不想通過只包含* jquery.min.js *的路徑來使服務器最小化jQuery 1.4(使用不區分大小寫的正則表達式比較,其中'.'表示任意單個字符*!)?如果我是您的客戶之一,並且會聽到這個消息,我肯定會終止合同。 – Gumbo 2010-05-19 20:40:42

+0

Hey Gumbo,你有一個有效的重點「jquery.min.js」是一個可憐的正則表達式比較。謝謝。 – 2010-06-08 06:43:38

回答

1

我同意秋葵,但在這裏是你如何能做到這一點:

1 ..獲取重寫規則在httpd.conf工作

正如manual明確規定:

默認情況下,主服務器上下文中的mod_rewrite配置設置不會被虛擬主機繼承。爲了使設置適用於虛擬主機的主服務器,則必須將以下指令在每個部分:

RewriteEngine On 
RewriteOptions Inherit 

 

2 ..如果檢測HTTPS是,如果是和IS是安全網頁,重寫......

這可以通過查看%{HTTP_HOST}來完成:

RewriteCond %{HTTPS} !=on 
RewriteRule /jquery\.min\.js$ https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js [NC,R=permanent] 

RewriteCond %{HTTPS} =on 
RewriteRule /jquery\.min\.js$ http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js [NC,R=permanent] 

你也應該避免使用點和你使用的RewriteCond是不必要的;你可以在RewriteRule中做到這一點。

3.每個單獨的域將仍然有它自己的自定義mod重寫規則。哪些規則優先 - 全局或每個域?他們合併?如果我在全局httpd.conf中有「RewriteEngine On」指令,然後再在vhost.conf中,可以嗎?

它將被預置到虛擬主機的mod_rewrite配置。

+0

修復了它。謝謝Artefacto – 2010-06-22 02:27:18