2012-10-01 62 views
1

我是nginx新手,真的不知道該怎麼做。這是什麼下面的代碼本質上是做htaccess的是例如想將這個.htaccess規則轉換爲nginx

如果瀏覽器從這個網址

http://www.example.com/folder1/css/style-30493094.css

話,就說明這個文件

http://www.example.com/folder1/css/style.css

都是相同的請求此css文件也適用於所有其他在此代碼中定義了擴展。 CSS,JS,PNG,JPG,GIF 一樣,如果瀏覽器請求該js文件從該網址

http://www.example.com/folder1/js/javascript-2938293.js

話,就說明這個文件

http://www.example.com/folder1/js/javascript.js

其實我試圖做到這一點。 http://derek.io/blog/2009/auto-versioning-javascript-and-css-files/

RewriteEngine On 
RewriteRule ^folder1/(css|js|images)/([a-z]+)-([0-9]+)\.(css|js|png|jpg|gif)$ /folder1/$1/$2.$4 [L] 

回答

1

在此基礎上:http://wiki.nginx.org/HttpRewriteModule#rewrite 看起來你可以把你的當前正則表達式,並在nginx.conf使用它。

rewrite ^folder1/(css|js|images)/([a-z]+)-([0-9]+)\.(css|js|png|jpg|gif)$ /folder1/$1/$2.$4 last; 

所以你的整個服務塊可能看起來像:

server { 
    listen 192.168.0.1; 
    server_name blah.blah.com; 

    location ~ \.(css|js|png|jpg|gif) { 
     rewrite ^folder1/(css|js|images)/([a-z]+)-([0-9]+)\.(css|js|png|jpg|gif)$ /folder1/$1/$2.$4 last; 
    } 
} 

編輯:你只需要適當地調整正則表達式。 在你提供的情況:

rewrite ^(.*/?)([a-z]+)-([0-9]+)\.(css|js|png|jpg|gif)$ /$1$2.$4 last; 

將改寫:

[Anything with an optional trailing slash (or nothing)] followed by [at least one alphabetic character (lowercase only)] followed by [a hyphen] followed by [at least one numeric character] followed by [a dot] followed by [one of css|js|png|jpg|gif] 

[That first optional text followed by an optional slash][the alphabetic part (i.e. style)].[the final css|js|png|jpg|gif] 
+0

那是快。感謝您的解決方案,雖然我沒有在上面進行測試,但是我想進一步擴展它,並且想知道是否有一種方法可以將此應用於任何文件,而不管路徑和文件夾如何。我的意思是,如果/style-9389289.css中有文件或文件夾/ style-9389289.css中有文件 –

+0

響應是在編輯問題 –

+0

很好!感謝您的幫助。 –