請教nginx rewrite的規則為什麼沒有生效?
配置了一個nginx的站點,需求是這樣的:
1. 訪問/images/*時,從站點根目錄下的/view/images/*獲取。
2. 訪問/css/*時,從站點根目錄下的/view/css/*獲取。
3. 其他文件,均從/control/*獲取。
下面是配置,但是發現無論是images還是css,都執行了這條rewrite規則: rewrite ^/(?!control/)(.*) /control/$1 last;
上面的兩條根本沒有發生作用,不知道是怎麼回事?server
{
listen 80;
server_name www.abcd.com;
root /www/abcd;
index index.html index.php;
rewrite ^/images/(.*)$ /view/images/$1 last;
rewrite ^/css/(.*)$ /view/css/$1 last;
rewrite ^/(?!control/)(.*) /control/$1 last;
error_page 404 /control/index.php;
location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}如下是nginx 的響應錯誤日誌:
2010/04/07 06:05:39 12949#0: *11526 open() "/www/abcd/control/view/css/style.css" failed (2: No such file or directory), client: 111.12.153.106, server: abcd.com, request: "GET /css/style.css HTTP/1.1", host: "abcd.com", referrer: "http://abcd.com/login.php"
2010/04/07 06:05:39 12949#0: *11522 open() "/www/abcd/control/view/images/logo.gif" failed (2: No such file or directory), client: 111.12.153.106, server: abcd.com, request: "GET /images/logo.gif HTTP/1.1", host: "abcd.com", referrer: "http://abcd.com/login.php"
《解決方案》
哪位高手能指點指點?
《解決方案》
頂一下,幫忙指點一下。謝謝!
《解決方案》
() "/www/abcd/control/view/images/logo.gif" failed (2: No such file or directory), client:
沒有這個文件 問下路徑對不對
《解決方案》
() "/www/abcd/control/view/images/logo.gif" failed (2: No such file or directory), client:
沒 ...
mitmax 發表於 2010-04-10 22:26 http://linux.chinaunix.net/bbs/images/common/back.gif
這應該就是樓主要問的問題
參考:
http://wiki.nginx.org/NginxChsHttpRewriteModule
搞清楚你那3句關於rewrite的語法用途
參考這個連接中基於目錄部分的配置
《解決方案》
rewrite ^/(?!control/)(.*) /control/$1 last;這條有問題,!如何匹配control,看看正則規則