2016-12-26 73 views
0

我有以下重寫規則:NGINX改寫開關目錄

location ^~ /assets { 
    rewrite_log on; 
    rewrite ^/assets/(.*)/(.*)$ /websites/$host/themes/$1/assets/$2 break; 
} 

所以,當我要求http://localhost/assets/theme1/css/style.css我希望它也改寫這個:

/websites/localhost/themes/theme1/assets/css/style.css

相反,它改寫對此的要求:

/websites/localhost/themes/theme1/css/assets/style.css

但是,當我改變了重寫規則:

rewrite ^/assets/(.*)/test/(.*)$ /websites/$host/themes/$1/assets/$2 break;

我要求http://localhost/assets/theme1/test/css/style.css一切工作就好了。

爲什麼它切換assetscss

回答

0

啊,我想我對正則表達式的工作方式有些困惑。 ;)這工作完全:

rewrite ^/assets/([^/]+)/(.*)$ /websites/$host/themes/$1/assets/$2 break;

$1,這是theme1/css匹配的一切,而是因爲我只想主題名稱,我必須排除/字符。非常感謝您閱讀本文!

+0

或者,您可以通過使用'(。*?)'而不是'(。*)'使第一次捕獲更加貪婪。 –

+0

謝謝!我也會嘗試。 :) – SomeCode